107 lines
15 KiB
TypeScript
107 lines
15 KiB
TypeScript
/**
|
|
* Deploy TestUSDT to KAVA Testnet
|
|
*
|
|
* Usage:
|
|
* npx ts-node scripts/deploy-test-usdt-kava.ts <PRIVATE_KEY>
|
|
*
|
|
* Example:
|
|
* npx ts-node scripts/deploy-test-usdt-kava.ts 0xabc123...
|
|
*
|
|
* Get KAVA Testnet TKAVA from: https://faucet.kava.io
|
|
*/
|
|
|
|
import { ethers, ContractFactory } from 'ethers';
|
|
|
|
// KAVA Testnet 配置
|
|
const KAVA_TESTNET_RPC = 'https://evm.testnet.kava.io';
|
|
const KAVA_TESTNET_CHAIN_ID = 2221;
|
|
|
|
// TestUSDT 合约 ABI
|
|
const CONTRACT_ABI = [
|
|
'constructor()',
|
|
'function name() view returns (string)',
|
|
'function symbol() view returns (string)',
|
|
'function decimals() view returns (uint8)',
|
|
'function totalSupply() view returns (uint256)',
|
|
'function balanceOf(address) view returns (uint256)',
|
|
'function transfer(address to, uint256 amount) returns (bool)',
|
|
'function approve(address spender, uint256 amount) returns (bool)',
|
|
'function allowance(address owner, address spender) view returns (uint256)',
|
|
'function transferFrom(address from, address to, uint256 amount) returns (bool)',
|
|
'function mint(uint256 amount)',
|
|
'function mintUsdt(uint256 usdtAmount)',
|
|
'function mintTo(address to, uint256 amount)',
|
|
'function faucet()',
|
|
'function owner() view returns (address)',
|
|
'event Transfer(address indexed from, address indexed to, uint256 value)',
|
|
'event Approval(address indexed owner, address indexed spender, uint256 value)',
|
|
];
|
|
|
|
// TestUSDT_Flat.sol 编译后的 bytecode
|
|
const CONTRACT_BYTECODE = `0x608060405234801561001057600080fd5b506040518060400160405280600981526020017f54657374205553445400000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152508160039081610091919061042e565b5080600490816100a1919061042e565b5050503360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061019f336006600a61019591906105ff565b620f42406101a4565b61064a565b80600260008282546101b691906106a5565b92505081905550806005600084815260200190815260200160002060008282546101e0919061069b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161024591906106e3565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806102d257607f821691505b6020821081036102e5576102e461028b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261034d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610310565b6103578683610310565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061039e6103996103948461036f565b610379565b61036f565b9050919050565b6000819050919050565b6103b883610383565b6103cc6103c4826103a5565b84845461031d565b825550505050565b600090565b6103e16103d4565b6103ec8184846103af565b505050565b5b81811015610410576104056000826103d9565b6001810190506103f2565b5050565b601f82111561045d5761042681610feb565b61042f84610300565b8101602085101561043e578190505b61045261044a85610300565b8301826103f1565b50505b505050565b600082821c905092915050565b60006104786000198460080261045a565b1980831691505092915050565b60006104918383610467565b9150826002028217905092915050565b6104aa82610251565b67ffffffffffffffff8111156104c3576104c261025c565b5b6104cd82546102ba565b6104d8828285610414565b600060209050601f83116001811461050b57600084156104f9578287015190505b6105038582610485565b86555061056b565b601f19841661051986610feb565b60005b828110156105415784890151825560018201915060208501945060208101905061051c565b8683101561055e578489015161055a601f891682610467565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156105f9578086048111156105d5576105d4610573565b5b60018516156105e45780820291505b80810290506105f2856105a2565b94506105b9565b94509492505050565b60006106178683851115610467565b5b8015610628578291508190506106475b509250929050565b600061063c858461064a565b9150826002028217905092915050565b60006106578261036f565b9150826106675761066661062d565b5b828202905092915050565b600061067d8261036f565b91508282019050828112156106955761069461062d565b5b92915050565b6000819050919050565b60006106b08261069b565b91506106bb8361069b565b92508282019050808211156106d3576106d2610573565b5b92915050565b6106e28161069b565b82525050565b60006020820190506106fd60008301846106d9565b92915050565b610c0d8061070c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610286578063dd62ed3e146102b6578063de0e9a3e146102e6578063e1f21c6714610302576100f5565b806370a08231146101f05780638da5cb5b1461022057806395d89b411461023e578063a0712d681461025c576100f5565b806323b872dd116100d357806323b872dd1461016a578063313ce5671461019a57806340c10f19146101b85780636a627842146101d4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b61010261031e565b60405161010f9190610981565b60405180910390f35b610132600480360381019061012d91906109ec565b6103b0565b60405161013f9190610a47565b60405180910390f35b6101506103d3565b60405161015d9190610a71565b60405180910390f35b610184600480360381019061017f9190610a8c565b6103dd565b6040516101919190610a47565b60405180910390f35b6101a261040c565b6040516101af9190610afb565b60405180910390f35b6101d260048036038101906101cd91906109ec565b610415565b005b6101ee60048036038101906101e99190610b16565b6104a9565b005b61020a60048036038101906102059190610b16565b6104ce565b6040516102179190610a71565b60405180910390f35b610228610517565b6040516102359190610b52565b60405180910390f35b610246610540565b6040516102539190610981565b60405180910390f35b61027660048036038101906102719190610b6d565b6105d2565b005b6102a0600480360381019061029b91906109ec565b6105fe565b6040516102ad9190610a47565b60405180910390f35b6102d060048036038101906102cb9190610b9a565b610621565b6040516102dd9190610a71565b60405180910390f35b61030060048036038101906102fb9190610b6d565b6106a8565b005b61031c60048036038101906103179190610a8c565b6106d4565b005b60606003805461032d90610c09565b80601f016020809104026020016040519081016040528092919081815260200182805461035990610c09565b80156103a65780601f1061037b576101008083540402835291602001916103a6565b820191906000526020600020905b81548152906001019060200180831161038957829003601f168201915b5050505050905090565b6000806103bb610763565b90506103c881858561076b565b600191505092915050565b6000600254905090565b6000806103e8610763565b90506103f5858285610934565b6104008585856109c0565b60019150509392505050565b60006006905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a90610c86565b60405180910390fd5b6104a582826106a8565b5050565b6104cb336127106006600a6104be9190610c3a565b6104c89190610c85565b6106a8565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461054f90610c09565b80601f016020809104026020016040519081016040528092919081815260200182805461057b90610c09565b80156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b5050505050905090565b6105fb336006600a6105e49190610c3a565b826105ef9190610c85565b6106a8565b50565b600080610609610763565b90506106168185856109c0565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6106d133826006600a6106bb9190610c3a565b6106c59190610c85565b6106a8565b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075990610c86565b60405180910390fd5b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d690610d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084590610daa565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161092c9190610a71565b60405180910390a3505050565b60006109408484610621565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109ba57818110156109ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a390610e16565b60405180910390fd5b6109b9848484840361076b565b5b50505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a005780820151818401526020810190506109e5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a28826109c5565b610a3281856109d0565b9350610a428185602086016109e1565b610a4b81610a0c565b840191505092915050565b60006020820190508181036000830152610a708184610a1d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aa882610a7d565b9050919050565b610ab881610a9d565b8114610ac357600080fd5b50565b600081359050610ad581610aaf565b92915050565b6000819050919050565b610aee81610adb565b8114610af957600080fd5b50565b600081359050610b0b81610ae5565b92915050565b60008060408385031215610b2857610b27610a78565b5b6000610b3685828601610ac6565b9250506020610b4785828601610afc565b9150509250929050565b60008115159050919050565b610b6681610b51565b82525050565b6000602082019050610b816000830184610b5d565b92915050565b610b9081610adb565b82525050565b6000602082019050610bab6000830184610b87565b92915050565b600080600060608486031215610bca57610bc9610a78565b5b6000610bd886828701610ac6565b9350506020610be986828701610ac6565b9250506040610bfa86828701610afc565b9150509250925092565b600060ff82169050919050565b610c1a81610c04565b82525050565b6000602082019050610c356000830184610c11565b92915050565b6000602082019050610c506000830184610b87565b92915050565b610c5f81610a9d565b82525050565b6000602082019050610c7a6000830184610c56565b92915050565b6000602082019050610c956000830184610b87565b92915050565b60008060408385031215610cb257610cb1610a78565b5b6000610cc085828601610ac6565b9250506020610cd185828601610ac6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d2257607f821691505b602082108103610d3557610d34610cdb565b5b50919050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6000610d716009836109d0565b9150610d7c82610d3b565b602082019050919050565b60006020820190508181036000830152610da081610d64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115610e2d57808604811115610e0957610e08610da7565b5b6001851615610e185780820291505b8081029050610e2685610dd6565b9450610ded565b94509492505050565b600082610e465760019050610f02565b81610e545760009050610f02565b8160018114610e6a5760028114610e7457610ea3565b6001915050610f02565b60ff841115610e8657610e85610da7565b5b8360020a915084821115610e9d57610e9c610da7565b5b50610f02565b5060208310610133831016604e8410600b8410161715610ed85782820a905083811115610ed357610ed2610da7565b5b610f02565b610ee58484846001610de3565b92509050818404811115610efc57610efb610da7565b5b81810290505b9392505050565b6000610f1482610adb565b9150610f1f83610c04565b9250610f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610e36565b905092915050565b6000610f5f82610adb565b9150610f6a83610adb565b9250828202610f7881610adb565b91508282048414831517610f8f57610f8e610da7565b5b5092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610ff26024836109d0565b9150610ffd82610f96565b604082019050919050565b6000602082019050818103600083015261102181610fe5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006110846022836109d0565b915061108f82611028565b604082019050919050565b600060208201905081810360008301526110b381611077565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006110f0601d836109d0565b91506110fb826110ba565b602082019050919050565b6000602082019050818103600083015261111f816110e3565b905091505056fea2646970667358221220`;
|
|
|
|
async function main() {
|
|
const privateKey = process.argv[2];
|
|
|
|
if (!privateKey) {
|
|
console.error(`
|
|
❌ Usage: npx ts-node scripts/deploy-test-usdt-kava.ts <PRIVATE_KEY>
|
|
|
|
Steps:
|
|
1. Get TKAVA from https://faucet.kava.io
|
|
2. Export your private key from MetaMask
|
|
3. Run: npx ts-node scripts/deploy-test-usdt-kava.ts 0xYourPrivateKey
|
|
`);
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log('🚀 Deploying TestUSDT to KAVA Testnet...\n');
|
|
|
|
// 连接到 KAVA Testnet
|
|
const provider = new ethers.JsonRpcProvider(KAVA_TESTNET_RPC, {
|
|
chainId: KAVA_TESTNET_CHAIN_ID,
|
|
name: 'kava-testnet',
|
|
});
|
|
|
|
// 创建钱包
|
|
const wallet = new ethers.Wallet(privateKey, provider);
|
|
console.log(`📍 Deployer address: ${wallet.address}`);
|
|
|
|
// 检查余额
|
|
const balance = await provider.getBalance(wallet.address);
|
|
console.log(`💰 Balance: ${ethers.formatEther(balance)} TKAVA`);
|
|
|
|
if (balance < ethers.parseEther('0.01')) {
|
|
console.error('\n❌ Insufficient TKAVA. Get some from https://faucet.kava.io');
|
|
process.exit(1);
|
|
}
|
|
|
|
// 部署合约
|
|
console.log('\n📦 Deploying contract...');
|
|
const factory = new ContractFactory(CONTRACT_ABI, CONTRACT_BYTECODE, wallet);
|
|
const contract = await factory.deploy();
|
|
|
|
console.log(`⏳ Waiting for confirmation...`);
|
|
console.log(` Transaction: https://testnet.kavascan.com/tx/${contract.deploymentTransaction()?.hash}`);
|
|
|
|
await contract.waitForDeployment();
|
|
const contractAddress = await contract.getAddress();
|
|
|
|
console.log(`
|
|
✅ TestUSDT deployed successfully on KAVA Testnet!
|
|
|
|
📋 Contract Address: ${contractAddress}
|
|
🔗 KavaScan: https://testnet.kavascan.com/address/${contractAddress}
|
|
|
|
Next steps:
|
|
1. Update .env: KAVA_USDT_CONTRACT=${contractAddress}
|
|
2. Call faucet() to mint 10,000 USDT for testing
|
|
3. Or call mintUsdt(100000) to mint 100,000 USDT
|
|
`);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error('❌ Deployment failed:', error.message);
|
|
process.exit(1);
|
|
});
|