- 第 1 章 区块链
- 第 2 章 以太坊
- 第 3 章 以太坊私链入门
- 第 4 章 以太坊网络
- 第 5 章 geth v1.8.16 命令详解
- 第 6 章 Wallet
- 第 7 章 Token
- 第 8 章 智能合约语言 Solidity v0.5.0
- 第 9 章 Truffle v4.1.8 开发框架
- 第 10 章 web3.js - 1.0.0
- 第 11 章 web3j v3.4.0 - Jave Client
- 11.2. 启动以太坊
- 11.3. Maven pom.xml 文件
- 11.4. Java 与 Solidity 数据类型映射关系
- 11.5. 常量
- 11.6. 连接到服务器获取版本号
- 11.7. 获得以太坊状态信息
- 11.8. 单位转换
- 11.9. 账号管理
- 11.10. Credentials
- 11.11. 交易
- 11.12. 钱包
- 11.13. 智能合约
- 11.14. ERC20合约
- 11.15. Infura
- 11.16. 助记词
- 11.17. 过滤器 (Filter)
- 11.18. Subscription
- 11.19. 解锁账号
- 11.20. IBAN (International Bank Account Number)
- 11.21. Springboot with Ethereum (web3j)
- 第 12 章 web3.py - A python interface for interacting with the Ethereum blockchain and ecosystem.
- 第 14 章 Ethereum Developer APIs
- 第 15 章 infura
- 第 16 章 以太坊案例
- 第 17 章 FAQ
- 17.3. Error: authentication needed: password or unlock
- 17.4. 新增节点后不生效
- 17.5. Unhandled rejection Error: Returned error: The method personal_unlockAccount does not exist/is not available
- 17.6. Error: exceeds block gas limit
- 17.7. Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(…) { … }" instead.
- 17.8. Exception in thread "main" rx.exceptions.OnErrorNotImplementedException: Invalid response received: okhttp3.internal.http.RealResponseBody@6c25e6c4
- 17.9. 旧版本 Remix(browser-solidity) 本地安装
- 第 18 章 Hyperledger Fabric v2.0.0
- 第 19 章 Hyperledger Fabric 运维
- 第 20 章 Chaincode 链码(智能合约)
- 第 21 章 Hyperledger Fabric Client SDK for Node.js
- 第 22 章 fabric-sdk-java
- 第 24 章 已知 Hyperledger 落地案例
- 第 25 章 Fabric Command
- 第 26 章 Fabric FAQ
- 第 27 章 IPFS(InterPlanetary File System,星际文件系统)
- 第 28 章 IPFS 命令
- 第 29 章 IPFS WebUI
- 第 30 章 IPFS 集群配置
- 第 31 章 IPFS API
- 第 32 章 IPFS Faq
- 第 33 章 EOS
- 第 34 章 EOS 安装
- 第 35 章 CLEOS
- 第 36 章 智能合约开发
- 第 37 章 EOS Dapp 开发
- 第 38 章 FAQ
- 第 39 章 BaaS (Blockchain as a Service) 平台
- 第 40 章 BitCoin
- 第 41 章 其他区块链相关
- 附录 1. 附录
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第 37 章 EOS Dapp 开发
37.1. eosjs
37.1.1. 安装 eosjs
curl -s https://raw.githubusercontent.com/oscm/shell/master/lang/node.js/binrary/node-v10.5.0.sh | bash curl -s https://raw.githubusercontent.com/oscm/shell/master/lang/node.js/binrary/profile.d.sh | bash npm install eosjs
37.1.2. 实例演示
37.1.2.1. 智能合约
[root@netkiller ~]# mkdir echo [root@netkiller ~]# cd echo/
[root@netkiller echo]# cat echo.cpp // website: http://www.netkiller.cn // author: netkiller@msn.com #include <eosiolib/eosio.hpp> #include <eosiolib/print.hpp> #include <string> using std::string; class echo_test : public eosio::contract { public: using eosio::contract::contract; void echo(string tmp) { eosio::print(tmp); } }; EOSIO_ABI( echo_test, (echo) )
[root@netkiller echo]# eosiocpp -o echo.wast echo.cpp [root@netkiller echo]# eosiocpp -g echo.abi echo.cpp 760047ms thread-0 abi_generator.hpp:68 ricardian_contracts ] Warning, no ricardian clauses found for echo_test 760048ms thread-0 abi_generator.hpp:75 ricardian_contracts ] Warning, no ricardian contract found for echo Generated echo.abi ...
[root@netkiller echo]# cleos wallet unlock password: Unlocked: default [root@netkiller echo]# cleos set contract neo ~/echo -p neo Reading WAST/WASM from /root/echo/echo.wasm... Using already assembled WASM... Publishing contract... executed transaction: 61a7cf6eaef1f46e0974369c3905f0fe3b5993c44ef0cd138172e260b3e35fee 2656 bytes 846 us # eosio <= eosio::setcode "000000000000a89a0000bb250061736d0100000001320a60027f7f006000006000017e60027e7e006000017f60027f7f017... # eosio <= eosio::setabi "000000000000a89a360e656f73696f3a3a6162692f312e300001046563686f000103746d7006737472696e6701000000000... warning: transaction executed locally, but may not be confirmed by the network yet [root@netkiller echo]# cleos push action neo echo '["helloworld"]' -p neo executed transaction: 0dfe1d9599e59a92e593e89fcfdd7eb7b069dda362c9c65a6f333b7959b1b8b5 104 bytes 327 us # neo <= neo::echo {"tmp":"helloworld"} warning: transaction executed locally, but may not be confirmed by the network yet
37.1.2.2. 通过 eosjs 访问智能合约
EOS = require('eosjs') eos = EOS.Localnet({ keyProvider: ['5JFMTVk4EjWW54xk73AMRPf5JbpFV2Cm7vtgt1jr9zVaPgLmaLQ'], httpEndpoint: 'http://127.0.0.1:8888' }) eos.contract('neo').then((contract) => { contract.echo("helloworld", { authorization: ['neo'] }).then((res) => { console.log(res) }) })
运行结果
[root@iZj6c39y62jl5b1wmfv6u8Z test]# node test.js deprecated, change Eos.Localnet(..) to just Eos(..) { broadcast: true, transaction: { compression: 'none', transaction: { expiration: '2018-07-02T09:41:21', ref_block_num: 4538, ref_block_prefix: 91102360, net_usage_words: 0, max_cpu_usage_ms: 0, delay_sec: 0, context_free_actions: [], actions: [Array], transaction_extensions: [] }, signatures: [ 'SIG_K1_K7kueHwDEYsX1xKrZrB1c1RZy2fD2iv8aeq74ww92ryGsmgYXA9qJXFUM1UtEE867y5jNyyaw52GEnFKmHTWe7RFYm2gpD' ] }, transaction_id: '2643a8d5ac9d408822d7d20712518449e87d18e2164851a6164bfe19801a88d8', processed: { id: '2643a8d5ac9d408822d7d20712518449e87d18e2164851a6164bfe19801a88d8', receipt: { status: 'executed', cpu_usage_us: 491, net_usage_words: 13 }, elapsed: 491, net_usage: 104, scheduled: false, action_traces: [ [Object] ], except: null } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论