美文网首页Dapp开发
EOS Blockchain开发(mac版)

EOS Blockchain开发(mac版)

作者: 野人植树 | 来源:发表于2018-05-18 18:27 被阅读194次

    1.建立构建/开发环境

    为了构建EOS dApps,首先需要建立我们的环境。大多数情况下,当构建dApp时,先可以使用testnet。EOS为我们提供了在建立本地测试网或公共测试网之间的选择。在编写本教程时,公共测试网目前不可用,因此我们将使用本地测试网。

    由于EOSIO的自动生成脚本,设置环境非常简单。它安装所有的依赖关系并构建EOSIO。在运行脚本之前,作为第一步,使用以下命令递归克隆EOS repo:

    git clone https://github.com/eosio/eos --recursive
    

    完成此操作后,转至eos文件夹并使用以下命令运行eosio_build.sh脚本:

    sh ./eosio_build.sh darwin
    

    请注意,在安装并构建所有依赖关系之前可能需要一段时间。

    看到提示成功后我们看一下文件夹里的内容:

    程序文件夹 - / eos / programs

    该程序的文件夹包含一些EOSIO非常有用的程序:

    • nodeos  - 服务器端区块链节点组件。核心EOSIO守护进程,可以使用插件配置以运行节点。示例用途是块生产,专用API端点和本地开发。

    • cleos  - 命令行界面与区块链交互

    • keosd  - 加载钱包相关插件的EOSIO钱包守护程序,例如HTTP接口和RPC API

    • eosio-launcher  - 应用程序协助部署多节点区块链网络

    构建文件夹 - / eos / build

    构建文件夹是所有构建的内容所在的位置。您可以在eos / build / programs的子文件夹中找到eos / programs文件夹的可执行文件。

    build文件夹是我们要进行构建验证的地方。这是一组测试,可以针对您的构建执行一些基本验证。为了在构建完成后运行测试套件,我们需要启动mongo守护进程,然后运行make test命令。

    /usr/local/bin/mongod -f /usr/local/etc/mongod.conf &cd build
    
    make test
    

    注意:为了运行该命令,您必须位于生成文件夹内

    如果一切顺利,所有的测试都应该通过。

    为了便于合同开发,可以使用make install命令将内容安装在

    / urs / local文件夹中。这一步从build文件夹运行。

    安装需要足够的权限。

    cd build
    
    sudo make install
    

    2.创建和启动单个节点Testnet

    成功构建EOSIO项目后,nodeos二进制文件应存

    在于build / programs / nodeos文件夹中。

    nodeos可以使用可执行文件直接从build文件夹运行。

    或者可以使用以下命令启动自己的单节点区块链:

    nodeos -e -p eosio --plugin eosio :: wallet_api_plugin --plugin eosio :: chain_api_plugin --plugin eosio :: account_history_api_plugin
    

    所有这些参数都在命令中:

    • 1.主要指挥

    nodeos

      1. eosio :: producer_plugin的配置选项

    -e - 启用块生产,即使链条陈旧

    -p <生产者名称> - 由此节点控制的生产者的ID

    • 3.应用程序配置选项

    --plugin arg - 要启用的插件可以多次指定

    • 4.在某些情况下,需要重置节点,以便从一开始就开始生成块。

    为了做到这一点,您需要在命令结尾处使用此参数添加并重新启动nodeos:

    --resync

    3.验证环境

    EOSIO附带示例合约,可以上传并运行用于测试目的。

    我们将使用eosio.token合约验证我们的单节点设置。

    假定节点如上所述正在运行。

    3.1创建一个钱包

    每份合同都需要一个关联账户,所以首先,您需要创建一个钱包。

    要创建钱包,您需要将wallet_api_plugin加载到nodeos进程中。

    这可以通过以下两种方式之一来完成:

    • 通过~/Library/Application Support/eosio/nodeos/config

    文件夹中的config.ini文件中的插件条目(即plugin = eosio :: wallet_api_plugin)

    • 通过调用nodeos时的插件命令行选项(即  - plugin eosio :: wallet_api_plugin)

    3.2导入eosio帐户的私钥

    注意:使用最新版本的EOSIO,私钥会自动添加到您的钱包中

    不过,我们希望与您分享如何在需要时手动添加它。该密钥可以在位于

    〜/ Library / Application Support / eosio / nodeos / config
    

    中的config.ini文件中找到。

    # faucet-private-key = [公钥,WIF私钥]用于签名龙头创建者账户(eosio :: faucet_testnet_plugin)
    
    [EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV,5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3]
    

    一旦你得到钥匙,你需要将它导入钱包:

    cleos wallet import 
    

    3.3为“eosio.token”合同创建一个帐户

    名为“token”的账户将用于“eosio.token”合同。生成两个公钥/私钥对,

    稍后将其分配为public-OwnerKey和public-ActiveKey。

    cd ~/eos/build/programs/cleos/
    
    cleos create key # OwnerKey
    
    cleos create key # ActiveKey
    

    这将输出两对公钥和私钥的形式:

    私钥:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
    公钥:EOSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    

    将两个私钥导入钱包。

    cleos wallet import 
    
    cleos wallet import 
    

    注意:如果您未指定钱包的名称,将使用“默认”名称。另外,不要忘记保存您生成的密钥。

    • 使用cleos create account命令创建令牌帐户。

    该创建将由eosio帐户授权。上面生成的两个公钥将与该账户关联,

    一个作为其OwnerKey,另一个作为其ActiveKey。

    应该返回一个JSON响应,并返回一个确认成功执行的事务ID。

    cleos create account eosio token
    
    executed transaction: b0a04ab4579658345dbe52cc3e4d6266dd3fd99db8660fab6c24d46983017ca9  352 bytes  102400 cycles
    
    #         eosio <= eosio::newaccount            {"creator":"eosio","name":"token","owner":{"threshold":1,"keys":[{"key":"EOS8guUEVKWUCsA58id2SKMpUHB...
    

    使用以下命令验证帐户是否已成功创建:

    cleos get account token
    

    3.4将“eosio.token”合约上传至区块链

    使用令牌帐户上传合约。响应应该是带有一些JSON的transaction_id。这表示您的合同已成功上传:

    # cleos set contract token {path_to_contract_folder} {path_to_wast_file} {path_to_abi_file}
    
    cleos set contract token ./contracts/eosio.token/ ./contracts/eosio.token/eosio.token.wast ./contracts/eosio.token/eosio.token.abiReading WAST/WASM from ./contracts/eosio.token/eosio.token.wast...
    
    ​Assembling WASM...
    
    ​Publishing contract...
    
    ​executed transaction: a4cbbbe999def95c25470982374fcd4d498146610f391d0e17e8766fc1b6d985  8320 bytes  2200576 cycles
    
    ​#eosio <= eosio::setcode               {"account":"token","vmtype":0,"vmversion":0,"code":"0061736d010000000181011560067f7e7f7f7f7f0060057f...
    
    #eosio <= eosio::setabi                {"account":"token","abi":{"types":[],"structs":[{"name":"transfer","base":"","fields":[{"name":"from...
    

    您还可以使用以下命令验证代码是否已设置:

    cleos get code token
    
    code hash: 48a05166e9a5493b422288d137a08a7b2ccf7fb2c3473b630909440d7bbf177a
    

    在使用eosio.token合同之前,您必须先创建并发布令牌。

    cleos push action token create '{"issuer":"token","maximum_supply":"1000000.0000 TKN","can_freeze":"0","can_recall":"0","can_whitelist":"0"}' -p token@active
    
    executed transaction: 0869043bc86b8b9f4514e5f6610446fbf97834a545cbf5e0ab9d8f4cc2731899  248 bytes  104448 cycles
    
    #         token <= token::create                {"issuer":"token","maximum_supply":"1000000.0000 TKN","can_freeze":0,"can_recall":0,"can_whitelist":...
    
    cleos push action token issue '{"to":"token","quantity":"1000.0000 TKN","memo":""}' -p token@active
    
    executed transaction: 66b9bc38a5eed7ee8bdeb89aa0e9cf90bfe8b5dbe024404a9c51d049aeab03df  248 bytes  107520 cycles
    
    #         token <= token::issue                 {"to":"token","quantity":"1000.0000 TKN","memo":""}
    
    >> issue
    

    接下来,验证初始余额:

    cleos get table token token accounts
    

    3.5使用“eosio.token”合同转移资金

    以下命令显示发送给eosio.token合约的“转帐”操作,将“20.0000 TKN”从“代币”账户转移到

    “eosio”账户。成功提交的事务将生成类似于以下内容的事务ID和JSON输出。

    成功提交的事务将生成事务ID和JSON输出。

    cleos push action token transfer '{"from":"token","to":"eosio","quantity":"20.0000 TKN","memo":"my first transfer"}' -p token
    
    executed transaction: 7f617d7a41a2b498f7392bf5d9d14ed7ee1cb384d3cdcb17f5d79bea607354de  272 bytes  113664 cycles
    
    #         token <= token::transfer              {"from":"token","to":"eosio","quantity":"20.0000 TKN","memo":"my first transfer"}
    
    >> transfer
    
    #         eosio <= token::transfer              {"from":"token","to":"eosio","quantity":"20.0000 TKN","memo":"my first transfer"}
    

    3.6检查余额

    检查前一个交易涉及的两个账户的状态如下:

    cleos get table token eosio accounts
    

    接收账户eosio现在具有20个TKN的余额,并且发送账户令牌现在比最初的问题少20个TKN。

    总结:

    • 首先安装EOSIO,并建立了我们的开发环境。

    • ​安装合约开发所需的可执行程序,并且开始了我们的第一个testnet节点,它在区块链上生成块。

    • 学习如何生成公钥/私钥并将它们导入我们的钱包。

    • 使用公钥 - OwnerKey和ActiveKey创建了一个账户,并且部署了eosio.token合约。

    • 作为压轴,使用账户之间的eosio.token合约转移资金。

    相关文章

      网友评论

      • 8337ea5e8883:您好,看到您的文章质量非常高,非常想邀请您成为虫洞社区的首批优质内容签约作者。虫洞社区是专业的区块链技术学习社区。虫洞社区鼓励内容生产者产生高质量内容,并给予合理的回报,也希望能帮助内容消费者获得高质量的区块链内容,并让数字货币投资者获得有价值的投资洞见。同时,虫洞社区已经积累了大量的区块链深度从业者,便于作者建立个人品牌。不知道是否方便加您微信细聊?
      • 杜鹏_5c80:战友的科普贴写的非常好,手把手教学,简单易学。我也知道一点EOS的知识,但是没有战友这么精通。希望战友更多的普及EOS相关知识,如果是大白话解说那就更好了,毕竟大部分读者都是小白。
      • IT人故事会:看完楼主的这个帖子之后,学习了谢谢!

      本文标题:EOS Blockchain开发(mac版)

      本文链接:https://www.haomeiwen.com/subject/rccndftx.html