作者:艹尛鱈_695 | 来源:互联网 | 2023-09-07 19:44
使用truffle模板能极大的提高我们学习区块链的进度以及了解智能合约一、下载MetaCoin模板truffleunboxmetacoin 这里不知道是网络问题还是环境问题,搞了半
使用truffle模板能极大的提高我们学习区块链的进度以及了解智能合约
一、下载MetaCoin模板
truffle unbox metacoin
这里不知道是网络问题还是环境问题,搞了半天都没搞好,无论是K学上网还是设置hosts,都没用,最后只能通过git clone下载metacoin代码。
truffle官网地址:https://www.trufflesuite.com/boxes
git上下载truffle各模板地址:https://github.com/truffle-box
下载完之后同样需要修改truffle-config.js文件里面的私有链地址
二、truffle test
三、truffle compile
这里要开启挖矿
四、truffle console
五、控制台与合同进行交互
1、查看部署合约的账户metacoin余额
MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[0]);}).then(function(value){return value.toNumber()});
这里出了问题,提示是地址不合法,我查了合约代码应该是没问题来着,结果把web3.eth.accounts[0]换成我们私有链的第一个默认账户地址就可以了
MetaCoin.deployed().then(function(instance){return instance.getBalance('0x229ea411d368c97b008c7bc19b01fdd813163701');}).then(function(value){return value.toNumber()});
10000
为什么这里会有10000余额呢,我看了合约代码原来是这样的:
我们前面创建了两个账户,现在查一下第二个账户:
MetaCoin.deployed().then(function(instance){return instance.getBalance('0xbb723ee82cb41a733f2289588697f0e199e29de5');}).then(function(value){return value.toNumber()});
0
合约里面getBalanceInEth方法写了一个metacoin值两个eth,所以调用下换算方法:
MetaCoin.deployed().then(function(instance){return instance.getBalanceInEth('0x229ea411d368c97b008c7bc19b01fdd813163701');}).then(function(value){return value.toNumber()});
20000
调用sendCoin转账方法(开启挖矿):
MetaCoin.deployed().then(function(instance){return instance.sendCoin('0xbb723ee82cb41a733f2289588697f0e199e29de5', 500);});
{ tx:
'0x8716dab16ffb66b23604c476643105929cab24890914592f8eecd2ebb2f72020',
receipt:
{ blockHash:
'0xc94a716ba1463740bc85ceb7be6abaccd09d1c1f329642630a685a3b60785f7f',
blockNumber: 546,
contractAddress: null,
cumulativeGasUsed: 51520,
effectiveGasPrice: '0x3b9aca00',
from: '0x229ea411d368c97b008c7bc19b01fdd813163701',
gasUsed: 51520,
logs: [ [Object] ],
logsBloom:
'0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000100000000000000000000004000010000000000000000000000000000000000000000000000000000000000000000000000100000000104000000000000000000000000000000000004000000020000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000100000',
status: true,
to: '0xaed8bef575a739c7239b4a140c789b2f41043279',
transactionHash:
'0x8716dab16ffb66b23604c476643105929cab24890914592f8eecd2ebb2f72020',
transactionIndex: 0,
type: '0x0',
rawLogs: [ [Object] ] },
logs:
[ { address: '0xAED8BEf575A739C7239B4a140c789B2f41043279',
blockNumber: 546,
transactionHash:
'0x8716dab16ffb66b23604c476643105929cab24890914592f8eecd2ebb2f72020',
transactionIndex: 0,
blockHash:
'0xc94a716ba1463740bc85ceb7be6abaccd09d1c1f329642630a685a3b60785f7f',
logIndex: 0,
removed: false,
id: 'log_4626e8e8',
event: 'Transfer',
args: [Result] } ] }
转账完查看两个账户余额:
##账户一
MetaCoin.deployed().then(function(instance){return instance.getBalance('0x229ea411d368c97b008c7bc19b01fdd813163701');}).then(function(value){return value.toNumber()});
9500
##账户二
MetaCoin.deployed().then(function(instance){return instance.getBalance('0xbb723ee82cb41a733f2289588697f0e199e29de5');}).then(function(value){return value.toNumber()});
500