精通EOS:EOS 智能合约入门

当前位置:首页 > 币圈百科 > 精通EOS:EOS 智能合约入门

精通EOS:EOS 智能合约入门

2023-02-06币圈百科223

第一部分,创建钱包和账户

智能合约与账户关联,账户与钱包关联。因此,为了开发智能合约,我们必须首先创建一个钱包。

1。创建钱包

执行以下命令创建默认钱包

。/build/programs/cleos/cleos?钱包?创造?to-console

生成的钱包默认在当前户主的eosio-wallet目录下,该命令还输出钱包的私钥pw 5kv 37 tphbxuh 52 vemhc 9 uscm JFC 7 egxdbv 9 qhtn 3 ppfh 39 phj 1g。必须保存这个私钥,因为以后需要解锁钱包时会用到它。

2。创建两个密钥对

正常情况下,我们需要创建两个密钥对,并在创建钱包之前将这两个密钥对的私钥导入到钱包中。但是,在撰写本文时,这种方法没有任何效果。

我目前使用的版本如下:

cloes版本为59626f1e,可以通过以下命令查看:

。/build/programs/cleos/cleos?版本?client

nodeos的版本是v1.4.4,可以用下面的命令查看:

。/build/programs/nodeos/nodeos?-v

您还可以执行以下命令来获取与版本相关的信息:

。/build/programs/cleos/cleos?得到?Info

下面的命令显示如下:

{?服务器版本'59626f1e '' chain_id 'cf 057 bbfb 72640471 FD 910 BCB 67639 c 22 df 9 f 92470936 cddc 1 ade 0 e 2e 2 f 2e 7 DC 4 f 'head_block_num '5085,last _ irreversible _ block _ num '5084,last _ irreversible _ block _ id '000013 DC 8 CFF 5717 b 630 D2 AC 7a 077242 F16 a 88269蓑衣网小编20234 d8a 0297 a1 EB 14 c 72d 05415 'head_block_id '000013 DDC F3 db 56 a3 de 7c 25922d 68824 b5 BCE 2240 b40 a 95 e 2d 4280640962 d0 d 7 'head_block_time '2018-12-03T15:32:04.500 'head_block_producer 'eosio '“虚拟块cpu限制”:32285095,“虚拟块网络限制”:169610961,block_cpu_limit '199900,block_net_limit '1048576,“服务器版本字符串”:V1.4.4'}

在这种情况下,如果在测试网络中部署智能合约,则只能使用以下密钥对:

私钥5kqwpbwdl 6 蓑衣网小编2023 phxujxw 37 fssqz 1 wst 4 cqzdeyxtp 79 ZK VFD 3公钥EOS 6 mryajqq 8 ud 7 hvnycfnvpjvpqcvpscn 5 so 8 bhthuggyqet 5 GD w5 cv

注意:创建密钥对的命令如下:/build/programs/cleos/cleos create。在当前版本中,不再需要自己生成密钥。

注2:如果当你在下面创建一个帐户时,很明显钱包已经解锁,你生成的密钥已经在钱包里,并且总是有错误3090003:提供的密钥、权限和延迟不附属声明的授权,那么你可以用本文给出的密钥试试。

3。将私钥导入wallet

接下来,将上面创建的两组私钥导入wallet

。/build/programs/cleos/cleos?钱包?导入

成功导入后,执行以下命令检查wallet中导入的密钥:

。/build/programs/cleos/cleos?钱包?键

4。创建账户

做好以上所有准备后,终于到了开始创建账户的时候了。

./build/programs/cleos/cleos创建帐户EOS io测试EOS 6 mryajqq 8 ud 7 hvnycfnvpqcvpscn 5 so 8 bhthugyqet 5 GD w5 cv

命令执行后,控制台会显示如下信息:

已执行?交易:35464656 da 73 bdcc 2 ca 6 EBD 3 b 0906 F5 c 0 cf 5 e 07 cdfa 7769d 4 B1 f 17 a 1649 F4 e 08?200?字节?10866?美国#?eosio?=?eosio:newaccount??{'creator''eosio '' name''test '' owner'{'threshold'1,' keys '[{ ' key '' EOS 6 mryajqq 8 ud 7 hvnycfnvpjqcv.警告:交易?被处决?本地呢?但是呢?梅?不是吗?是吗?确认了吗?被谁?那个?网络?还没吗??]

为了确保账户导入成功,执行下面的命令检查账户:

./build/programs/cleos/cleos?得到?账户?-j?测试

这个命令显示如下:

{?'"帐户名称":"测试''' head_block_num '4377,'" head_block_time ":“‘2018-12-03t 15:18:27.000’,'特权:假的,"最新代码更新":“‘1970-01-01t 00:00:00.000’,'已创建'''' 2018-12-03T15:16:30.000 ''' ram_quota '-1,'净重'-1,'「CPU _ weight」:-1,net_limit '{?'已用'-1,'可用'-1,'最大'-1?}," cpu_limit":{?'已用'-1,'可用'-1,'最大'-1?},'' ram_usage '2724,'权限'[{?" perm_name ":"活动''家长'''所有者''必填_auth '{?'阈值'1,'按键'[{?'键''EOS 6 mryajqq 8 ud 7 hvnycfnvqcvpscn 5 so 8 bhthugyqet 5 GD w5 cv ''重量'1?}?],'账户'[],"等待":[]?}?},{?'" perm_name ":"'所有者''家长''''必填_auth '{?'阈值'1,'按键'[{?'键''EOS 6 mryajqq 8 ud 7 hvnycfnvqcvpscn 5 so 8 bhthugyqet 5 GD w5 cv ''重量'1?}?],'账户'[],"等待":[]?}?}?],'' total_resources 'null,' self_delegated_bandwidth 'null,''退款_请求:null,'' voter_info 'null}

注:在以上操作时,如果出现提示钱包被锁定,那么请执行构建/程序/cleos/cleos钱包解锁-密码方法来解锁账户,密钥就是我们创建钱包时输出的私钥

第二部分、创建智能合约

作为传统,在计算中通常第一个程序都是你好世界,今天我们也不例外。下面我们就来写一个黎明的女神智能合约版的你好世界。

1、编写合约

在当前目录下新建一个目录你好来存放我们的智能合约相关文件EOS .的智能合约使用C来编写,所以我们需要新建一个文件,命名为Hello.cpp,拷贝如下内容到文件中。包括

包含?#包含?使用?命名空间?eosio//所有的智能合约都继承自合同类班级?喂?公共?eosio:契约?{?公:使用?契约:契约;///?@abi?行动?作废?嗨(?帐户名称?用户?)?{?打印(')你好?'姓名{用户}?);}};EOSIO_ABI(?你好?(嗨)?)

2、生成` .浪费`了文件

执行下面的命令来生成。第二人称单数直说法文件

./build/tools/eosiocpp?-哦?/你好/你好。浪费?/Hello/Hello.cpp

命令执行完你会看到在当前目录下生成了两个文件你好wasm和你好wast

3,生成` .阿比文件

执行下面的命令来生成100 . ABI文件

./build/tools/eosiocpp?-g?/Hello/Hello.abi?/Hello/Hello.cpp

4、部署合约

在。第二人称单数直说法文件和100 . ABI文件生成之后,接下来我们就可以部署我们的合约了

在部署合约之前,我们还要让钱包保持解锁状态,所以先执行下面的命令:

./build/programs/cleos/cleos?钱包?解锁?-密码

然后再执行下面的命令来部署我们的第一个智能合约:

./build/programs/cleos/cleos?设置?合同?测试?你好

如无意外,你就可以看到下面的输出。恭喜你,少年!你的合约部署成功了。

读书?WASM?从哪里?你好/你好。wasm.出版?合同.被处决?交易:CB 3600150671 ba 433 b 2 f 9 bfe 09937 e 63 f 2617 c 37155 C2 e 5 f1 CBC 46112 AC 62472?1792?字节?14128?美国#?eosio?=?eosio:setcode??{'account''test '' vmtype'0,' vmversion'0,' code '' 0061736d 01000000013 b0c 60027 f7e 006000017 e 60027 e7e 0.#?eosio?=?eosio:setabi??{ '帐户''测试'' ABI '' 0e 656 f 73696 F3 a3 a 6162692 f 312 e 30000102686900010475736572046 e 616d 65010000000.警告:交易?被处决?本地呢?但是呢?梅?不是吗?是吗?确认了吗?被谁?那个?网络?还没吗??]

注:之所以新建一个你好目录是因为黎明的女神要求合约所在的目录必须与合约的名字相同

为了确保合约部署成功,执行下面的命令查看下合约:

./build/programs/cleos/cleos?得到?代码?测试

通常你会看到合约的哈希,类似于如下:

代码?哈希:1d 0070 ffc 528 f 1268 ad 1 f 6 C5 ba 998245811318 BDC FD 8827432d 56 e 24 c 69 a 476 c

调用智能合约

万事具备,只你你来调用!最后,让我们来调用这个合约吧!

./build/programs/cleos/cleos?推?行动?测试?嗨?{'user''eos'} '-p?测试

然后,你就会看到下面的输出:

已执行?交易:885 a1 f 667 a 63658 F5 Abe 13435 ea 6989d 19672 fade 8 badc 2 e 8544480 b 4031 a 271?104?字节?1742?美国#?测试?=?测试:嗨???{ '用户'' EOS ' }警告:交易?被处决?本地呢?但是呢?梅?不是吗?是吗?确认了吗?被谁?那个?网络?还没吗??]

但是此时你却看不到我们的合约打印信息,怎么会事呢?原来,默认情况下,系统是不在控制下打印的,为了在控制台上看到我们合约的输出,要在启动节点时加上-合同-控制台,完整的命令如下:

./build/programs/nodeos/nodeos?-e?-p?eosio?--plugin?eosio::chain_api_plugin?--plugin?eosio::history_api_plugin?--contracts-console

现在再执行一次上面调用合约的命令,就可以看到下图中打印的内容:eos-hello

同时在节点运行的控制台上也可以看到下图,要特别注意红框中的内容,那里就是我们合约执行的一些内容。eos-hello2

后记

由于本人水平所限,文中错误在所难免,欢迎您踊跃指出错误,在下感激不尽。我的微信联系方式:joepeak。

版权声明:自由转载-非商用-非衍生-保持署名(创意共享4.0许可证)[x]
精通EOS:EOS 智能合约入门 | 分享给朋友: