千家信息网

EOS区块链平台智能合约怎么实现HelloWorld

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"EOS区块链平台智能合约怎么实现HelloWorld",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"EOS区块链平台智能合约怎么实现Hel
千家信息网最后更新 2026年11月03日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 webaassemblyeosiocpp -o hello.wast hello.cpp# Creating abieosiocpp -g hello.abi hello.cpp

帐户创建和合约发布

创建一个名为Hello.Code的帐户。我们将进一步使用这个帐户发布Hello合约。

用cleos set contract ${account} ${path} -p ${permmition}命令发布合约。

$ cleos create account eosio hello.code EOS8QMGRoRPZ4uf3w8WACcrg3wKzLtXpCk5Gpia6pdFzSuftLigWT EOS8QMGRoRPZ4uf3w8WACcrg3wKzLtXpCk5Gpia6pdFzSuftLigWTexecuted 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.codeReading 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 userexecuted 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 userError 3090004: missing required authority# Unauthorized$ cleos push action hello.code hi '["tester"]' -p testerexecuted 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_transaction2525788ms thread-0   http_plugin.cpp:406           handle_exception     ] Exception Details: 3090004 missing_auth_exception: missing required authoritymissing 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"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

合约 帐户 函数 命令 智能 区块 平台 用户 终端 面的 编译 运行 代码 内容 文件 日志 示例 结果 错误 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 互联网通讯科技 期待互联网科技 万易互联网科技有限公司 美国互联网黑科技 互联网科技上市公司 互联网科技英文翻译 国外互联网科技网站 滨湖区互联网智能科技产品供应 互联网实体化科技化 福州新华互联网科技学校 知乎 浙江互联网科技研学营 互联网科技公司有风险吗 广州市恰铎互联网科技有限公司 元气玛特互联网科技公司是外包吗 梅州GM互联网络科技有限公司 杭州披云加互联网科技有限公司 河南商务圈互联网科技有限公司 互联网科技创业有什么好项目 小牛互联网科技有限公司地址 互联网科技工作委员会毛军 腾讯阿里互联网科技 互联网系的金融科技公司 荆州市昕露互联网络科技有限公司 小米互联网科技园入驻 江苏苏星互联网科技有限公司 电子商务与互联网科技的关系 信承诺互联网科技有限公司 青岛易易互联网科技 武汉亿视互联网科技有限公司
0