以太坊区块链PHP离线交易开发包

hubwiz · · 2511 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

**EthTool**开发包适用于希望采用**裸交易**的PHP以太坊应用开发,主要包含以下特性: - 支持裸交易部署/调用合约 - 内置etherscan和infura支持 - keystore生成与读取,兼容geth/parity 采用裸交易的一个好处是开发者不必自己部署以太坊节点 —— 同步区块是很痛苦的过程。使用EthTool构造 好裸交易之后,只需要使用第三方(etherscan/infura/...)提供的服务来广播交易即可。 > 下载地址:[http://sc.hubwiz.com/codebag/eth-php-lib/](http://sc.hubwiz.com/codebag/eth-php-lib/?affid=1211studygolang) EthTool运行在**Php 7.1+**环境下,当前版本1.0.0,主要代码文件清单如下: <table class="table table-striped"> <thead> <tr><th>代码文件</th><th>说明</th></tr> </thead> <tbody> <tr><td>ethtool/src/Callback.php</td><td>RPC回调类</td></tr> <tr><td>ethtool/src/Credential.php</td><td>身份标识类</td></tr> <tr><td>ethtool/src/KeyStore.php</td><td>Keystore类,V3算法</td></tr> <tr><td>ethtool/src/EthApi.php</td><td>以太坊交易接口基类</td></tr> <tr><td>ethtool/src/EthApiEtherscan.php</td><td>Etherscan交易接口类</td></tr> <tr><td>ethtool/src/EthApiWeb3.php</td><td>Infura/Web3交易接口类</td></tr> <tr><td>ethtool/src/RawContract.php</td><td>裸交易合约类</td></tr> <tr><td>ethtool/src/RawTxBuilder.php</td><td>裸交易构造器</td></tr> <tr><td>test/demo-etherscan.php</td><td>裸交易演示代码,使用etherscan提交</td></tr> <tr><td>test/demo-infura.php</td><td>裸交易演示代码,使用infura提交</td></tr> <tr><td>test/demo-keystore.php</td><td>keystore演示代码</td></tr> <tr><td>vendor</td><td>第三方依赖包目录</td></tr> <tr><td>composer.json</td><td>composer配置文件</td></tr> </tbody> </table> ### 2. 使用说明 代码包的主要类如下: - RawTxBuilder: 裸交易构造器 - Credential: 账户私钥与交易签名封装 - EthApi: 以太坊交易接口封装 - KeyStore: V3版本的keystore,兼容geth/parity **裸交易构造** 使用**RawTxBuilder**的`create()`静态方法获取一个构造器实例,例如: ``` $rtb = RawTxBuilder::create(); ``` 裸交易构造器需要绑定一个账户对象,使用`credential()`方法: ``` $crendetial = Crendetial::fromKey('...'); $rtb->credential($credential); ``` RawTxBuilder目前支持三种裸交易的构造: - 普通裸交易,例如以太币转账交易。使用`getPlaintx()`方法获取。 - 合约部署裸交易,使用`getDeployTx()`方法获取。 - 合约方法调用裸交易,使用`getSendTx()`方法获取。 例如,下面的代码生成合约部署裸交易: ``` $rawtx = RawTxBuilder::create() ->credential($credential) ->gasLimit('4000000') ->gasPrice('10000000000') ->chainId($chainId) ->nonce($nonce) ->contract($abi) //创建合约对象,一个RawContract实例 ->bytecode($bin) //设置合约对象的字节码 ->getDeployTx(1000000,'HAPPY COIN',0,'HAPY'); //获取部署裸交易码流 ``` **裸交易广播** **EthApi**基类目前定义以下方法,可以根据自己的需要扩充 - getTransactionCount - sendRawTransaction - getTransactionReceipt **EthApiEtherscan**是基于Etherscan服务的EthApi实现,**EthApiWeb3**是基于以太坊RPC的EthApi 实现。例如,下面的代码使用Etherscan在rinkeby测试链部署前面获得的裸交易: ``` $eth = new EthApiEtherscan($your_api_key/*etherscan api key*/,4/*rinkeby*/); $txid = $eth->sendRawTransaction($rawtx); ``` **KeyStore读写** KeyStore类可以读取geth/parity生成的keystore文件,其生成的 keystore文件也可以被geth/parity读取。 使用**KeyStore**类的静态方法`save()`将私钥转化为keystore格式写入指定目录: ``` $credential = Credential::new(); $prv = $credential->getPrivateKey(); $fileName = KeyStore::save($prv,'123','./keystore') ``` 使用KeyStore类的静态方法`load()`载入指定的keystore文件并解密私钥: ``` $fileName = './keystore/....' $prv = KeyStore::load($fileName,'123'); ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2511 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传