使用 Cardano 輕量級錢包 Mallet 連接進 KEVM Testnet 測試網路並進行轉帳測試

in #cardano6 years ago (edited)

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