| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import {toUtf8String,parseUnits,ContractFactory, parseEther,JsonRpcProvider, ethers ,Contract, JsonRpcSigner, Wallet,ContractTransactionResponse, MaxInt256
- ,Transaction,formatEther,
- decodeBase64
- } from 'ethers'
- import { connect } from 'http2';
-
- const MMF_ABI = [
- // ========== ERC20 기본 함수 ==========
- "function name() view returns (string)",
- "function symbol() view returns (string)",
- "function decimals() view returns (uint8)",
- "function totalSupply() view returns (uint256)",
- "function balanceOf(address account) view returns (uint256)",
- "function transfer(address to, uint256 amount) returns (bool)",
- "function allowance(address owner, address spender) view returns (uint256)",
- "function approve(address spender, uint256 amount) returns (bool)",
- "function transferFrom(address from, address to, uint256 amount) returns (bool)",
-
- // ========== Share-Based 함수 ==========
- "function sharesOf(address account) view returns (uint256)",
- "function getSharesByTokenAmount(uint256 tokenAmount) view returns (uint256)",
- "function getTokenAmountByShares(uint256 shareAmount) view returns (uint256)",
-
- // ========== Purchase 함수 ==========
- "function purchaseWithDT(address buyer, uint256 dtAmount) returns (uint256)",
- "function processPendingPurchase(address buyer, uint256 index) returns (bool)",
-
- // ========== Redemption 함수 ==========
- "function redeemToDT(uint256 tokenAmount) returns (uint256)",
- "function redeemAll() returns (uint256)",
-
- // ========== NAV & Rebase 함수 ==========
- "function currentNAV() view returns (uint256)",
- "function updateNAVAndRebase(uint256 newNAV) returns (bool)",
- "function lastNAVUpdateTime() view returns (uint256)",
- "function lastRebaseTime() view returns (uint256)",
- "function totalRebaseAmount() view returns (uint256)",
- "function getNAVDecimal() view returns (uint256, uint256)",
-
- // ========== Lockup 함수 ==========
- "function lockupUntil(address) view returns (uint256)",
- "function defaultLockupPeriod() view returns (uint256)",
- "function getLockupTimeRemaining(address user) view returns (uint256)",
-
- // ========== Pending Purchase 함수 ==========
- "function getPendingPurchaseCount(address user) view returns (uint256)",
- "function getPendingPurchase(address user, uint256 index) view returns (uint256 dtAmount, uint256 timestamp, uint256 navAtPurchase, bool processed)",
-
- // ========== Access Control 함수 ==========
- "function hasRole(bytes32 role, address account) view returns (bool)",
- "function paused() view returns (bool)",
-
- // ========== Admin 함수 ==========
- "function setDTTokenAddress(address _dtTokenAddress)",
- "function setDefaultLockupPeriod(uint256 period)",
- "function setUserLockup(address user, uint256 until)",
- "function pause()",
- "function unpause()",
-
- "function updateNAVWithDecimals(uint256 value, uint256 decimalPlaces) external returns (bool)",
-
- "function getNAVPrecision() external pure returns (uint256)",
-
- // ========== Events ==========
- "event Transfer(address indexed from, address indexed to, uint256 value)",
- "event Approval(address indexed owner, address indexed spender, uint256 value)",
- "event TokensPurchased(address indexed buyer, uint256 dtAmount, uint256 tokenAmount, uint256 nav, uint256 timestamp)",
- "event TokensRedeemed(address indexed redeemer, uint256 tokenAmount, uint256 dtAmount, uint256 nav, uint256 timestamp)",
- "event NAVUpdated(uint256 oldNAV, uint256 newNAV, uint256 timestamp, address updater)",
- "event Rebased(uint256 oldTotalSupply, uint256 newTotalSupply, int256 rebaseAmount, uint256 nav, uint256 timestamp)",
- "event LockupUpdated(address indexed user, uint256 lockupUntil)",
- "event PurchasePending(address indexed buyer, uint256 dtAmount, uint256 nav, uint256 timestamp)",
- "event PurchaseProcessed(address indexed buyer, uint256 index, uint256 timestamp)",
-
-
- ];
-
- export const SMMF_CONTRACT_ADDRESS =
- "0xC290e84BE1886a08760b3468D4C3083A36C17a21"; // sMMF 주소
-
- const PULSE_RPC_URL = "https://secuchain.testnet.stopulse.co.kr/";
-
-
- export const SOL_ADDRESS = "0x8DFeB78ecEe391149b1c2739cEd0f6992D0a5663";
- const PRIVATE_KEY =
- "0x47c496fe62e38aebcf4c5298cdae6889efed27b308fb473311d4a209e512f20e";
-
- const PULSE_PRIVATE_KEY =
- "0xcd2336d7c471a0f2f1da77e91bcaf71e96e40481415bdb062152b4d045e1702c";
-
- const provider = new ethers.JsonRpcProvider(PULSE_RPC_URL);
- const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
- const walletAdmin = new ethers.Wallet(PULSE_PRIVATE_KEY, provider);
-
- const contractAdmin = new ethers.Contract(
- SMMF_CONTRACT_ADDRESS,
- MMF_ABI,
- walletAdmin
- );
- const contract = new ethers.Contract(
- SMMF_CONTRACT_ADDRESS,
- MMF_ABI,
- wallet
- );
-
- async function setup() {
-
- const amount = "1000000000";
-
- let tx = await contractAdmin.purchaseWithDT(
- SOL_ADDRESS,
- ethers.parseEther(amount),
- {
- gasLimit: 500000, // 가스 한도 증가
- gasPrice: 0,
- }
- );
- await tx.wait(1);
-
- const currentNAV = await contractAdmin.currentNAV();
- console.log(currentNAV.toString());
-
- // const balance = await mmfToken.balanceOf(userA.address);
- const balance = await contractAdmin.balanceOf(SOL_ADDRESS);
-
- console.log(`balance = ${balance.toString()}}`);
-
- }
-
- async function setNav() {
- await contractAdmin.updateNAVWithDecimals(10002365, 7);
- }
-
- async function view() {
-
- // const precision = await mmfToken.getNAVPrecision();
-
- const precision = await contract.getNAVPrecision();
- console.log(`precision = : ${precision.toString()}`);
-
-
- const currentNAV = await contract.currentNAV();
- console.log(`currentNAV = : ${ currentNAV.toString()}`);
-
- const balance = await contract.balanceOf(SOL_ADDRESS);
-
- console.log(`balance = ${balance.toString()}}`);
- }
- async function main() {
-
- //await setup();
- //await setNav();
- await view();
-
- }
-
-
-
- main();
|