EOS区块链平台智能合约怎么实现HelloWorld
本篇内容主要讲解“EOS区块链平台智能合约怎么实现HelloWorld”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“EOS区块链平台智能合约怎么实现HelloWorld”吧!
创新互联一直通过网站建设和网站营销帮助企业获得更多客户资源。 以"深度挖掘,量身打造,注重实效"的一站式服务,以网站设计制作、成都网站设计、移动互联产品、成都全网营销推广服务为核心业务。十余年网站制作的经验,使用新网站建设技术,全新开发出的标准网站,不但价格便宜而且实用、灵活,特别适合中小公司网站制作。网站管理系统简单易用,维护方便,您可以完全操作网站资料,是中小公司快速网站建设的选择。
运行nodeos
要通过Hello World日志进行验证,请使用contracts-console
选项运行它。
nodeos --contracts-console
生成智能合约
让我们尝试通过一个不同的新的终端上(除了nodeos
的终端之外)访问EOS目录,创建一个名为Hello的文件夹。命令如下:
$ cd eos $ cd mkdir hello $ cd hello
然后,创建hello.cpp
文件并复制下面的示例。Hello合约继承了EOS.IO提供的合约,并具有打印出用户名Hello
的功能。
编译代码
对于第一个命令,让我们用
WebAssembly
编译代码。编译时,可能会提示警告(但我们可以忽略它)。对于第二个命令,让我们创建ABI。
# Compile webaassembly eosiocpp -o hello.wast hello.cpp # Creating abi eosiocpp -g hello.abi hello.cpp
帐户创建和合约发布
创建一个名为Hello.Code
的帐户。我们将进一步使用这个帐户发布Hello合约。
用cleos set contract ${account} ${path} -p ${permmition}
命令发布合约。
$ cleos create account eosio hello.code EOS8QMGRoRPZ4uf3w8WACcrg3wKzLtXpCk5Gpia6pdFzSuftLigWT EOS8QMGRoRPZ4uf3w8WACcrg3wKzLtXpCk5Gpia6pdFzSuftLigWT executed transaction: e6847fc85c7733dd70a9ff27c2cad98ea0b50fb6c80c2b0c7ea1bf64f9917916 200 bytes 225 us # eosio <= eosio::newaccount {"creator":"eosio","name":"hello.code","owner":{"threshold":1,"keys":[{"key":"EOS8QMGRoRPZ4uf3w8WACc... $ cleos set contract hello.code ../hello -p hello.code Reading WAST/WASM from ../hello/hello.wasm... Using already assembled WASM... Publishing contract... executed transaction: 7e1b070382188677e70cf4b87e8fbe02c072f10063983ffc1d8259b127d8fea7 1800 bytes 723 us # eosio <= eosio::setcode {"account":"hello.code","vmtype":0,"vmversion":0,"code":"0061736d01000000013b0c60027f7e006000017e600... # eosio <= eosio::setabi {"account":"hello.code","abi":"0e656f73696f3a3a6162692f312e30000102686900010475736572046e616d6501000...
调用函数
让我们调用hello
类的hi
函数。它可以用下面的命令来完成:
cleos push action ${contract_name} ${function} ${[argument]} -p ${permission}
在下面的示例中,hello.code
合约中的用户帐户调用hi
函数。
$ cleos push action hello.code hi '["user"]' -p user executed transaction: d7932d1ee61ab6b0fed1f9e20d4a2e2607b029763aeaf1daea4ed718d2885797 104 bytes 500 us # hello.code <= hello.code::hi {"user":"user"}
结果
在nodeos
终端中执行交易的块中添加了以下输出。hello
是名为hi
函数的用户的名字。
2703777ms thread-0 apply_context.cpp:28 print_debug ] [(hello.code,hi)->hello.code]: CONSOLE OUTPUT BEGIN ===================== Hello, user [(hello.code,hi)->hello.code]: CONSOLE OUTPUT END =====================
授权运行请求
替换为包含授权请求调用
hi
函数。
结果
当我们试图用一个未经授权的帐户调用它时,会出现一个错误(如下)。
使用授权帐户,它正常输出无错误。
# Authorized $ cleos push action hello.code hi '["tester"]' -p user Error 3090004: missing required authority # Unauthorized $ cleos push action hello.code hi '["tester"]' -p tester executed transaction: 16a34c27c7d162dc3940358197306df619911fb930cbddd6d208125a770886f4 104 bytes 243 us # hello.code <= hello.code::hi {"user":"tester"}
可以在nodeos
的块中按如下方式打印日志:
2525788ms thread-0 http_plugin.cpp:405 handle_exception ] FC Exception encountered while processing chain.push_transaction 2525788ms thread-0 http_plugin.cpp:406 handle_exception ] Exception Details: 3090004 missing_auth_exception: missing required authority missing authority of tester {"account":"tester"} thread-0 apply_context.cpp:132 require_authorization {"_pending_console_output.str()":""} thread-0 apply_context.cpp:62 exec_one
到此,相信大家对“EOS区块链平台智能合约怎么实现HelloWorld”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
分享文章:EOS区块链平台智能合约怎么实现HelloWorld
标题网址:http://pwwzsj.com/article/pgoejj.html