0、Cardano KEVM/IELE Testnet 相關參考資料,請參考之前的文章:
https://steemit.com/cardano/@oneleo/cardano-kevm-iele-testnet
https://steemkr.com/cardano/@oneleo/cardano-kevm-iele-testnet
1、如何安裝 Oracle VM VirtualBox 5.2.16 版,請參考之前的文章:
https://steemit.com/oracle/@oneleo/oracle-vm-virtualbox-5-2-16
https://steemkr.com/oracle/@oneleo/oracle-vm-virtualbox-5-2-16
2、如何在 Oracle VM VirtualBox 內安裝 Ubuntu 18.04 Desktop 版,並安裝更新、建立快照,請參考之前的文章:
https://steemit.com/vm/@oneleo/oracle-vm-virtualbox-ubuntu-18-04-desktop
https://steemkr.com/vm/@oneleo/oracle-vm-virtualbox-ubuntu-18-04-desktop
3、如何在 Ubuntu 作業系統內安裝 Cardano Testnet 測試網路輕量級錢包 Mallet,請參考之前的文章:
https://steemit.com/cardano/@oneleo/ubuntu-linux-cardano-testnet-mallet
https://steemkr.com/cardano/@oneleo/ubuntu-linux-cardano-testnet-mallet
4、使用 Cardano 輕量級錢包 Mallet 連接進 KEVM Testnet 測試網路並進行轉帳測試
(1)連接進 KEVM Testnet Wallet 指令列(Interactive Shell)
$ cd $HOME/mallet
$ ./mallet kevm
(2)顯示可使用的指令
參考:https://github.com/input-output-hk/mallet/blob/master/README.md
mallet> listCommands()
//-------------------------Content-------------------------
[ 'currentAccount',
'getBalance',
'getNonce',
'getReceipt',
'help',
'iele.contractCall',
'iele.createContract, iele.compile',
'iele.simpleTransfer',
'importPrivateKey',
'lastTransaction',
'listAccounts',
'listCommands',
'newAccount',
'requestFunds',
'rlp',
'selectAccount',
'sendTransaction',
'web3' ]
//-------------------------Content-------------------------
(3)建立一新的 Testnet Wallet 帳號
mallet> newAccount()
//-------------------------Content-------------------------
Enter password: ubuntu // 輸入帳號密碼
Repeat password: ubuntu // 再次輸入帳號密碼
'0x5bcf00ecb86c5b833549fcc68e32650e21c58559' // 此為新帳號的 Testnet Wallet 地址
//-------------------------Content------------
註:若希望給別人看到帳號密碼,則使用此指令:
mallet> newAccount('<帳號密碼>')
(4)列出目前擁有的 Testnet Wallet 地址
mallet> listAccounts()
//-------------------------Content-------------------------
[ '0x5bcf00ecb86c5b833549fcc68e32650e21c58559' ]
//-------------------------Content-------------------------
(5)選定 Testnet Wallet 帳號(這邊以上述地址為例),以進行後續操作
// mallet> selectAccount('<Testnet Wallet 地址>')
mallet> selectAccount('0x5bcf00ecb86c5b833549fcc68e32650e21c58559')
//-------------------------Content-------------------------
'0x5bcf00ecb86c5b833549fcc68e32650e21c58559'
//-------------------------Content-------------------------
(6)顯示目前已選定 Testnet Wallet 帳號地址
mallet> currentAccount()
//-------------------------Content-------------------------
'0x5bcf00ecb86c5b833549fcc68e32650e21c58559'
//-------------------------Content-------------------------
(7)取得目前 Testnet Wallet 地址餘額
// mallet> getBalance()
mallet> getBalance()
//-------------------------Content-------------------------
'0'
//-------------------------Content-------------------------
註:或是直接指定欲看到的 Testnet Wallet 地址餘額
mallet> getBalance('<Testnet Wallet 地址>')
(8)離開 mallet> Shell
mallet> .exit
(9)取得 Testnet 測試用代幣
// $ curl -X POST https://kevm-testnet.iohkdev.io:8099/faucet?address=<Testnet Wallet 地址>
$ curl -X POST https://kevm-testnet.iohkdev.io:8099/faucet?address=0x5bcf00ecb86c5b833549fcc68e32650e21c58559
註:或是可直接在 mallet> 指令列中使用下列指令:
mallet> requestFunds('<Testnet Wallet 地址>')
(10)再次進入 mallet> Shell
$ cd $HOME/mallet
$ ./mallet kevm
(11)再次取得目前 Testnet Wallet 地址餘額
mallet> getBalance('0x5bcf00ecb86c5b833549fcc68e32650e21c58559')
//-------------------------Content-------------------------
'30000000000000000'
//-------------------------Content-------------------------
(12)建立第二組 Testnet Wallet 帳號
mallet> myAccount = newAccount()
//-------------------------Content-------------------------
Enter password: ubuntu
Repeat password: ubuntu
'0x9fc9cb271375397f758e2185c9829dd571d120cb'
//-------------------------Content-------------------------
(13)列出目前擁有的 Testnet Wallet 地址
mallet> listAccounts()
//-------------------------Content-------------------------
[ '0x5bcf00ecb86c5b833549fcc68e32650e21c58559',
'0x9fc9cb271375397f758e2185c9829dd571d120cb' ]
//-------------------------Content-------------------------
(14)選定第二組 Testnet Wallet 帳號,並取得測試用代幣
// 選定第二組 Testnet Wallet 帳號。
mallet> selectAccount(myAccount)
//-------------------------Content-------------------------
'0x9fc9cb271375397f758e2185c9829dd571d120cb'
//-------------------------Content-------------------------
// 取得目前 Testnet Wallet 地址餘額。
mallet> getBalance()
//-------------------------Content-------------------------
'0'
//-------------------------Content-------------------------
// 讓目前選定的帳號取得 Testnet 測試用代幣。
mallet> txHash = requestFunds()
//-------------------------Content-------------------------
'0x54521feb916a312177bf6b7be4d1b7fe7cb95b67ee73dd369b93ac4cf9c76500'
//-------------------------Content-------------------------
// 取得從 Faucet 來的轉帳資訊。
// getReceipt('<轉帳 Hash>')
mallet> getReceipt(txHash)
//-------------------------Content-------------------------
{ transactionHash:
'0x54521feb916a312177bf6b7be4d1b7fe7cb95b67ee73dd369b93ac4cf9c76500',
transactionIndex: 0,
blockNumber: 453241,
blockHash:
'0x225ee2c7f5e4c615c3f807ccd33745fa45dff4edd50d30a4f049426ee50a9815',
cumulativeGasUsed: 21680,
gasUsed: 21680,
contractAddress: null,
logs: [],
statusCode: '0x00',
status: 1,
returnData: '0x' }
//-------------------------Content-------------------------
// 取得目前 Testnet Wallet 地址餘額。
mallet> getBalance()
//-------------------------Content-------------------------
'30000000000000000'
//-------------------------Content-------------------------
(15)第一組 Testnet Wallet 帳號轉帳 1000000 代幣至第二組 Testnet Wallet 帳號
註:將文字轉成數值可參考此篇文章及網站
https://medium.com/likecoin/hands-on-blockchain-331f6bc7fcce
https://www.asciitohex.com/
// 選定第一組 Testnet Wallet 帳號。
mallet> selectAccount('0x5bcf00ecb86c5b833549fcc68e32650e21c58559')
// 設置交易變數,需符合下方 JSON 格式。
mallet> tx = {
'to': '0x9fc9cb271375397f758e2185c9829dd571d120cb', // 收件人的地址。如果未提供新的合約則為可選值。
'gas': 100000, // gas limit,必要值。
'gasPrice': 5000000000, // gasPrice,可選值,若未指定則預設為 5 Gwei。
'value': 1000000, // 要傳送的代幣量,可選值,若未指定則預設為 0。
'data': '0x49204c6f76652043617264616e6f21' // 要附加的交易資訊,可選值,若未指定則預設為空值:''。
}
//-------------------------Content-------------------------
{ to: '0x9fc9cb271375397f758e2185c9829dd571d120cb',
gas: 100000,
gasPrice: 5000000000,
value: 1000000,
data: '0x49204c6f76652043617264616e6f21' }
//-------------------------Content-------------------------
// 執行交易。
mallet> txHash = sendTransaction(tx)
//-------------------------Content-------------------------
Enter password: ubuntu
'0x359b543ba3cadbb7618c7d53119f7e6ca9e71e43146b14471de139b9bf0acd81'
//-------------------------Content-------------------------
// 取得 txHash 的交易資訊。
mallet> getReceipt(txHash)
//-------------------------Content-------------------------
{ transactionHash:
'0x359b543ba3cadbb7618c7d53119f7e6ca9e71e43146b14471de139b9bf0acd81',
transactionIndex: 0,
blockNumber: 453359,
blockHash:
'0x7591938c53770caac0c62868a7c660255b4b8acdb46258bf5fd096ea08a23492',
cumulativeGasUsed: 22020,
gasUsed: 22020,
contractAddress: null,
logs: [],
statusCode: '0x00',
status: 1,
returnData: '0x' }
//-------------------------Content-------------------------
(16)取得第一組及第二組 Testnet Wallet 地址餘額
// 列出目前擁有的 Testnet Wallet 地址。
mallet> listAccounts()
//-------------------------Content-------------------------
[ '0x5bcf00ecb86c5b833549fcc68e32650e21c58559',
'0x9fc9cb271375397f758e2185c9829dd571d120cb' ]
//-------------------------Content-------------------------
// 取得第一組 Testnet Wallet 地址餘額。
mallet> getBalance('0x5bcf00ecb86c5b833549fcc68e32650e21c58559')
//-------------------------Content-------------------------
'29889899999000000'
//-------------------------Content-------------------------
// 取得第二組 Testnet Wallet 地址餘額。
mallet> getBalance('0x9fc9cb271375397f758e2185c9829dd571d120cb')
//-------------------------Content-------------------------
'30000000001000000'
//-------------------------Content-------------------------
Donate ADA:
DdzFFzCqrhsup2Q4nnhKJJZ5BRuPkYUSPqDJn72t2dtHtVqsz5kQQmopMQR16Sv9qS5NC4w8Kv5P8XrDH2n2FD2akxtrntjc8hbgAmTz