作为我们Block Producer对社区利益的承诺的一部分,我们希望专注于构建有助于提高EOS平台采用率的工具/应用程序。与大多数大型应用程序一样,当你只有少量或过时的文档并且缺乏工具来帮助你进行入门学习时,可能就会存在很高的进入门槛。

为了节省刚入门的EOS开发人员一些时间,我们整理了一个PHP SDK,它涵盖了大部分EOS的API方法。在文档中,每个调用都有一些示例,其中包含API的实际输出。

无论你是否使用PHP,我们都希望这将是一个有用的参考点,可以开始构建你的第一个应用程序,或者只是了解EOS区块链API提供的内容也好。

你可以查看EOS官方文档,但要注意缺少一些较新的方法。此外,这些文档中的一些示例使用了过时的语法。

安装

composer require block-matrix-network/php-eos-rpc-sdk

设置

使用你喜欢的RPC API主机在项目根目录中创建一个dotenv .env文件。你可以使用.env.example作为模板:

cp .env.example .env

用法

有一个工厂方法来自动实例化所有依赖项:

$api = (new ChainFactory)->api();

示例

为了帮助你入门,有一个简单的示例运行器,它涵盖了所有API命令。

只需通过cli运行此命令即可查看所有命令的示例输出:

cd examples
php chain.php

API方法

涵盖了所有只读的EOS区块链API方法。下面举几个例子:

getInfo 获取信息

获取与节点相关的最新信息。

echo $api->getInfo();{"server_version": "db031363","chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906","head_block_num": 1380988,"last_irreversible_block_num": 1380657,"last_irreversible_block_id": "0015113163cbe7676c4e56d1758a1ce95e47fa645827b9202de5753031d36b8b","head_block_id": "0015127c94676db3da55ec66210952db7f4db35b0e731abefff1562c201a0666","head_block_time": "2018-06-18T15:38:45.000","head_block_producer": "eoscannonchn","virtual_block_cpu_limit": 200000000,"virtual_block_net_limit": 1048576000,"block_cpu_limit": 199900,"block_net_limit": 1048576
}

getBlock 获取块信息

获取与块相关的信息。

echo $api->getBlock("1337");{"timestamp": "2018-06-09T12:09:21.500","producer": "eosio","confirmed": 0,"previous": "00000538b374c1cbfaeed7253ad3075ddc72a28f0a0515301fc1bbed675f2316","transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000","action_mroot": "bcb9763baa3bbf98ed36379b4be0ecb2d9cd21c75df01729c63b2b021001c10c","schedule_version": 0,"new_producers": null,"header_extensions": [],"producer_signature": "SIG_K1_K5jWf36t6j454Hb2fGuV37YTwMTvuQ51ZPBtpru8Ud2axtMTEauWyvtpJuTpnvqzReUndDgEDXvoeEP4jdj2bpnYKBt6g2","transactions": [],"block_extensions": [],"id": "00000539d17a03af7126e073be4c4d99a72b7f58793cf2c87b9bfd41b6c711fb","block_num": 1337,"ref_block_prefix": 1944069745
}

getCode 获取代码

获取智能合约代码。

echo $api->getCode("eosio.token");{"account_name": "eosio.token","code_hash": "3e0cf4172ab025f9fff5f1db11ee8a34d44779492e1d668ae1dc2d129e865348","wast": "(module\n  (type $0 (func (param i32 i64 i32)))\n  (type $1 (func (param i32 i64 i64 i32 i32)))\n  (type $2 (func (param i32 i64 i32 i32)))\n  (type $3 (func ))\n  (type $4 (func  (result i64)))\n  (type $5 (func (param i64 i64)))\n  (type $6 (func (param i64)))\n  (type $7 (func (param i32 i32)))\n  (type $8 (func (param i64 i64 i64 i64) (result i32)))\n  (type $9 (func (param i64 i64 i64 i64 i32 i32) (result i32)))\n  (type $10 (func (param i32 i32 i32) (result i32)))\n  (type $11 (func (param i64) (result i32)))\n  (type $12 (func (param i32)))\n  (type $13 (func  (result i32)))\n  (type $14 (func (param i32 i32) (result i32)))\n  (type $15 (func (param i32) (result i32)))\n  (type $16 (func (param i32 i32 i32 i32)))\n  (type $17 (func (param i32 i64 i32 i64)))\n  (type $18 (func (param i64 i64 i32 i32)))\n  (type $19 (func (param i32 i64 i32) (result i32)))\n  (type $20 (func (param i64 i64 i64)))\n  (import \"env\" \"abort\" (func $23 ))\n  (import \"env\" \"action_data_size\" (func $24  (result i32)))\n  (import \"env\" \"current_receiver\" (func $25  (result i64)))\n  (import \"env\" \"current_time\" (func $26  (result i64)))\n  (import \"env\" \"db_find_i64\" (func $27 (param i64 i64 i64 i64) (result i32)))\n  ...... (export \"_ZN5eosio5token5issueEyNS_5assetENSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE\" (func $51))\n  (export \"_ZN5eosio5token11add_balanceEyNS_5assetEy\" (func $52))\n  ...........  $block2\n          get_local $3\n          i32.const 12\n          i32.add\n          tee_local $3\n          get_local $1\n          i32.lt_u\n          br_if $loop\n        end ;; $loop\n      end ;; $block1\n      return\n    end ;; $block\n    get_local $0\n    i32.const -4\n    i32.add\n    tee_local $3\n    get_local $3\n    i32.load\n    i32.const 2147483647\n    i32.and\n    i32.store\n    )\n  \n  (func $87\n    unreachable\n    ))","wasm": "","abi": {"version": "eosio::abi\/1.0","types": [{"new_type_name": "account_name","type": "name"}],"structs": [{"name": "transfer","base": "","fields": [{"name": "from","type": "account_name"},{"name": "to","type": "account_name"},{"name": "quantity","type": "asset"},{"name": "memo","type": "string"}]},{"name": "create","base": "","fields": [{"name": "issuer","type": "account_name"},{"name": "maximum_supply","type": "asset"}]},{"name": "issue","base": "","fields": [{"name": "to","type": "account_name"},{"name": "quantity","type": "asset"},{"name": "memo","type": "string"}]},{"name": "account","base": "","fields": [{"name": "balance","type": "asset"}]},{"name": "currency_stats","base": "","fields": [{"name": "supply","type": "asset"},{"name": "max_supply","type": "asset"},{"name": "issuer","type": "account_name"}]}],"actions": [{"name": "transfer","type": "transfer","ricardian_contract": "## Transfer Terms & Conditions\n\nI, {{from}}, certify the following to be true to the best of my knowledge:\n\n1. I certify that {{quantity}} is not the proceeds of fraudulent or violent activities.\n2. I certify that, to the best of my knowledge, {{to}} is not supporting initiation of violence against others.\n3. I have disclosed any contractual terms & conditions with respect to {{quantity}} to {{to}}.\n\nI understand that funds transfers are not reversible after the {{transaction.delay}} seconds or other delay as configured by {{from}}'s permissions.\n\nIf this action fails to be irreversibly confirmed after receiving goods or services from '{{to}}', I agree to either return the goods or services or resend {{quantity}} in a timely manner.\n"},{"name": "issue","type": "issue","ricardian_contract": ""},{"name": "create","type": "create","ricardian_contract": ""}],"tables": [{"name": "accounts","index_type": "i64","key_names": ["currency"],"key_types": ["uint64"],"type": "account"},{"name": "stat","index_type": "i64","key_names": ["currency"],"key_types": ["uint64"],"type": "currency_stats"}],"ricardian_clauses": [],"error_messages": [],"abi_extensions": []}
}

GetCurrencyBalance 获得货币余额

获取帐户的货币余额。

echo $api->getCurrencyBalance("eosio.token", "eosdacserver");["2453.2054 EOS"
]

测试

要运行测试套件,只需执行:

vendor/bin/phpunit

更多内容查看github 资料库。

======================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是原文一个EOS区块链RPC API接口的PHP SDK包

介绍一个用于EOS区块链的RPC API接口的PHP开发包SDK相关推荐

  1. 区块链的一些Api接口

    请看这个接口文档: https://www.btctrade.com/api.help.html

  2. ET钱包2月25日早报 | 过去24小时EOS区块链活跃度指数蝉联榜首

    EOS不是完美的区块链,这个世界也不存在完美的区块链.然而,存在着一批又一批对EOS精雕细琢的人,他们在不断地加强EOS.有些问题并不可怕和严重,因为,人的智慧总能够发现方法,解决这些问题. 2019 ...

  3. eos区块链 java客户端_分享一个网友第一次开发EOS区块链总结的经验

    在处理项目时,用Java Connector for EOS区块链编写: 创建钱包 创建帐户 创建交易 创建签名交易 在帐户之间转移代币 我遇到了各种和运行本地EOS节点需要遵循的基本步骤.这个小指南 ...

  4. eos操作系统_如何基于EOS区块链发一个自己的币,挣它一个亿?

    那个疯狂的比特币,从不足1美分到19000美元,涨了2600万倍,涨得令世人怀疑人生.为什么涨得这么疯狂?最根本的原因是它提出了区块链的技术.巨大的财富效应导致如今各种区块链项目像蚂蚁一样层出不穷.其 ...

  5. 【刘文彬】 Controller:EOS区块链核心控制器

    原文链接:醒者呆的博客园,www.cnblogs.com/Evsward/p/c- Controller是EOS区块链的核心控制器,其功能丰富.责任重大. 关键字:EOS,区块链,controller ...

  6. 第一次开发EOS区块链的经验总结

    在处理项目时,用Java Connector for EOS区块链编写: 创建钱包 创建帐户 创建交易 创建签名交易 在帐户之间转移代币 我遇到了各种和运行本地EOS节点需要遵循的基本步骤.这个小指南 ...

  7. EOS区块链开发的第一步

    对于区块链的初创企业来说,去年真的是史诗般的一年.由于以太坊区块链以及它为开发人员创建去中心化的应用程序带来了机会,许多区块链公司诞生了. 以太坊引入了Solidity语言和智能合约 - 去中心化应用 ...

  8. 分享网友第一次开发EOS区块链总结的经验

    在处理项目时,用Java Connector for EOS区块链编写: 创建钱包 创建帐户 创建交易 创建签名交易 在帐户之间转移代币 我遇到了各种和运行本地EOS节点需要遵循的基本步骤.这个小指南 ...

  9. 第一次开发EOS区块链的经验

    在处理项目时,用Java Connector for EOS区块链编写: 创建钱包 创建帐户 创建交易 创建签名交易 在帐户之间转移代币 我遇到了各种和运行本地EOS节点需要遵循的基本步骤.这个小指南 ...

最新文章

  1. F5 配置手册 -F5 BIG-IP 10.1-2-配置-基本参数
  2. 我爱Java系列---【 maven依赖版本冲突的解决方法】
  3. Giphy – 分享一个很棒的 GIF 动画图片搜索引擎
  4. 新手学测试----Unit Test(单元测试)
  5. 基于RBAC模型的通用权限管理系统的设计(数据模型)的扩展
  6. 搭建Maven私有仓库
  7. python5个功能_5个常用的定制Python功能代码
  8. js中立即执行函数会预编译吗_面试官:聊聊对Vue.js框架的理解
  9. Cookie、token、session的区别是什么?
  10. xdf文件改word_真正Txt 文本文件和Doc Word文件批量互转工具
  11. 模拟铁路12306售票系统的设计与实现
  12. 用粉红噪声煲机_白噪音|煲机白噪音粉红噪音mp3下载 - 121下载站
  13. word自定义多级编号列表
  14. 基于腾讯人口迁徙数据的全国城市网络结构特征分析
  15. 今天是我的生日,也是我的离职日!
  16. 更新数据时redis缓存与数据库数据不一致的问题
  17. HTML点击图片出现边框,简单的jQuery实现点击图片出现弹框【原创】
  18. pandas合并文件夹下的excel文件
  19. C++中fstream
  20. CheckBoxList详细用法

热门文章

  1. leaked window产生的原因及解决方案
  2. utf-8的英文字母和中文汉字是一个字符占几个字节
  3. 分布式之线上监控工具CAT
  4. Android平台所支持的API级别
  5. 1万字!彻底看懂微信小程序
  6. postman传String类型参数时不能加双引号
  7. 【JS】js中的和符号,或符号
  8. ENSPAC的web配置直接转发
  9. 设计模式 | 观察者模式及典型应用
  10. 在教育孩子上少一点功利心,就会快乐?