EthTool开发包适用于开发想使用裸交易的PHP和以太坊应用。主要包括以下几个特性:支持裸交易部署/调用合约内置etherscan和infura支持keystore的生成和读取,兼容geth/parity使用裸交易的一个好处是开发者不用自己部署以太坊节点——同步块是一个痛苦的过程。使用EthTool构建裸交易后,只需要使用第三方提供的服务(etherscan/infura/...)广播交易即可。下载地址:http://sc.hubwiz.com/codebag/eth-php-lib/EthTool运行于Php7.1+环境,当前版本为1.0.0,主要代码文件列表如下:代码文件说明ethtool/src/Callback.phpRPC回调类ethtool/src/Credential.php身份类ethtool/src/KeyStore.phpKeystore类,V3算法ethtool/src/EthApi.php以太坊交易接口基类ethtool/src/EthApiEtherscan.phpEtherscan交易接口类ethtool/src/EthApiWeb3.phpInfura/Web3交易接口类ethtool/src/RawContract.php裸交易合约类ethtool/src/RawTxBuilder.php裸交易构造函数test/demo-etherscan.php裸交易demo代码,使用etherscan提交测试/demo-infura.php裸交易demo代码,使用infura提交测试/demo-keystore.phpkeystoredemo代码vendor第三方依赖包目录composer.jsoncomposer配置文件使用说明代码包主要类如下: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,'快乐硬币',0,'快乐');//获取并部署原始交易代码流。裸交易广播EthApi基类目前定义了以下方法,可以根据自己的需要进行扩展。.例如,下面的代码使用了部署rinkeby测试链之前Etherscan获取的原始交易:$eth=newEthApiEtherscan($your_api_key/*etherscanapikey*/,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='./密钥库/....'$prv=KeyStore::load($fileName,'123');
