EOS柚子区块链平台构建HelloWorld智能合约
蓝天天使2017
post on 2022-11-12 13:43:43
21
0
0
一般环境设置通过上一篇文章已经说明,这方面的问题大家可以看本博客上一篇文章,本文引用了官方EOS在Git上的示例。
运行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
调用函数
让我们调用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
结果
在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
可以在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
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
Write the first review