xrp瑞波币怎么获取,xrp瑞波币怎么做

  

  XrpTool可以帮助PHP应用快速访问Ripple /Ripple区块链,即支持部署自己的Ripple节点应用场景,也支持使用开放的Ripple节点广播离线裸事务的轻量级部署场景。XrpTool官方下载地址:http://sc.hubwiz.com/codebag/xrp-php-lib/.   

  

  1.开发包概述   

  

  XrpTool主要包括以下特性:   

  

  全功能的Ripple节点客户端支持完整的RPC API开发接口,Ripple密钥对和地址的离线生成,Secp256k1和Ed25519密码算法,Ripple交易的离线序列化和离线签名,Ripple /XRP和自发行令牌的直接转移,以及令牌发行、货币交易、支票发行、资金托管等各种Ripple交易。XrpTool开发包运行在PHP 7.1环境下,当前版本为1。   

  

     

  

  XrpTool开发工具包主要代码文件列表,请参考官网说明:http://sc.hubwiz.com/codebag/xrp-php-lib/   

  

  2、XrpTool   

  

  XrpTool是开发包的入口类,可以用来快速组织和广播事务,或者访问开发包其他类预先创建的实例对象。   

  

  2.1交易的组织、签名和广播   

  

  在XrpTool中,Ripple事务的执行包括以下步骤:   

  

  事务数据的组织:使用关联数组组织事务数据签名和广播,使用XrpTool实例的transact()方法对事务进行预处理、序列化和签名,最后提交给节点并广播到网络等待事务确认。例如,下面的代码使用XrpTool来完成Ripple /XRP的直接支付交易:   

  

  使用XrpTool \ XrpTool$ tool=new XrpTool(' https://s . altnet . rippletest . net :51234 ');//使用测试链暴露节点//使用密文恢复身份证书$ credential=$ tool-restore credential(' s nt 3 wxqbglmaf qphs 9 pyhm 9 GPIB 79 ');//发起账户身份证明//组织交易数据$ tx='交易类型'='支付',//交易类型:支付'账户'=' RFT 5 --' kfjnylpub 6 x 9 do 8 homvqkdrs 8 ',//发起账号'目的地'=' rnu 5a 7v 51 b V6 znn 8 kq 8 jdgtzndimjxojcc ',//接收账号'金额'='13500' //交易数量,单位:滴;//事务序列化、签名和提交$ txid=$ tool-transact ($ tx,$ credential);//向节点提交广播回显“tx hash=”。$txid。PHP _ EOL//显示事务哈希//等待事务确认$ validated=$ tool-等待tx($ txid);//默认超时:5秒回显“tx validated=”。$ validated.php _ eol;//显示是否已确认//查询收款账号余额$ balance=$ tool-get balance($ tx ' destination ');//检查接收帐户的余额echo' xrp balance='。$ balance-xrp.php _ eol;//显示XRP余额XrpTool官方下载地址:http://sc.hubwiz.com/codebag/xrp-php-lib/.   

  

  2.2支持的交易类型   

  

  XrpTool目前支持的Ripple交易类型在官网:http://sc.hubwiz.com/codebag/xrp-php-lib/.有描述   

  

  2.3示例:令牌发放和转移   

  

  Ripple区块链支持任何用户发行令牌,前提是他们受到其他人的信任。这就是信任线/TrustLine: Ripple使用信任线来表示一个用户对另一个用户的有限.的信任量的作用   

  

  在Ripple区块链发行代币有三个步骤:   

  

  启用发行帐户的DefaultRipple标志。接收账户为发行账户设置信任额度。发行账户将代币转移到接收账户。以下代码显示了如何使用XrpTool颁发自定义令牌,其中issuer代表颁发帐户,receiver代表令牌接收帐户:   

  

  使用XrpTool \ XrpTool   

  

  $ tool=new XrpTool(' https://s . altnet . rippletest . net :51234 ');//使用测试链公开节点   

  

  $ issuer _ address=' RFT 5 enw 5 kfjnylpub 6 x 9 do 8 houmvqkdrs 8 ';//发行账户地址   

  

  $issuer_secret='snT3W   

xQbGLMAfqPhS9pYHM9gpib79'; //发行账户密文

  

$receiver_address = 'rnU5a7v51BV6znn8kq8jdGtZNDiMJxojcc'; //接收账户地址

  

$receiver_secret = 'snfjzzfRtq3hPdZ2msjFUxRN1748B'; //接收账户密文

  

//启用发行账户的相关标志

  

$txi = <

  

'TransactionType' => 'AccountSet', //交易类型:AccountSet

  

'Account' => $issuer_address, //交易发起账户

  

'SetFlag' => 8, //default-ripple //设置DefaultRipple标志

  

>;

  

$txid = $tool->transactWithSecret($txi,$issuer_secret); //提交交易

  

$tool->waitForTx($txid); //等待交易确认

  

//接收账户设置信任线

  

$txi = <

  

'TransactionType' => 'TrustSet', //交易类型:TrustSet

  

'Account' => $receiver_address, //交易发起账户

  

'LimitAmount' => <

  

'currency' => 'WIZ', //信任的代币名称:WIZ

  

'issuer' => $issuer_address, //信任的发行账户

  

'value' => '1000' //信任额度

  

>

  

>;

  

$txid = $tool->transactWithSecret($txi,$receiver_secret); //提交交易

  

$tool->waitForTx($txid); //等待交易确认

  

//发行代币

  

$txi = <

  

'TransactionType' => 'Payment', //交易类型:Payment

  

'Account' => $issuer_address, //交易发起账户

  

'Destination' => $receiver_address, //代币接收账户

  

'Amount' => < //代币金额

  

'currency' => 'WIZ', //代币名称

  

'value' => '15', //代币数量

  

'issuer' => $issuer_address //代币发行账户

  

>

  

>;

  

$txid = $tool->transactWithSecret($txi,$issuer_secret); //提交交易

  

$tool->waitForTx($txid); //等待交易确认

  

//查询代币余额

  

$balance = $tool->getBalance($receiver_address); //查询接收账户的代币余额

  

foreach($balance->issued as $issued) {

  

echo "issuer => " . $issued->issuer . PHP_EOL; //代币发行账户

  

echo "currency => " . $issued->currency . PHP_EOL; //代币名称

  

echo "balance => " . $issued->balance . PHP_EOL; //代币余额

  

}

  

可以看到,在Ripple中XRP转账和代币转账都使用Payment交易,区别仅在于Amount字段的值类型:如果值是一个关联数组,表示执行代币转账;如果是一个数值字符串,表示执行XRP转账。

  

3、RpcClient

  

RpcClient类封装了Ripple节点的RPC API接口协议,XrpTool实例通过rpcClient属性提供了预创建的RpcClient对象,也可以独立创建一个RpcClient实例。

  

3.1 实例化

  

实例化RpcClient需要指定节点的RPC API访问URL。例如,下面的代码创建一个连接本地Ripple节点的RpcClient实例,之后的RPC调用都将提交给这个URL对应的节点:

  

use XrpTool\RpcClient;$client = new RpcClient('http://localhost:51234'); //使用本地节点注意:Ripple节点的RPC API的访问协议(http | https)与监听端口依赖于 配置文件。上面的代码假设本地Ripple节点RPC API已经配置了http协议访问,并且 在51234端口监听。

  

你也可以创建一个连接主链公开节点的RpcClient实例,例如:

  

$client = new RpcClient('https://s1.ripple.com:51234'); //使用主链公开节点或者创建一个连接测试链公开节点的RpcClient实例,例如:

  

$client = new RpcClient('https://s.altnet.rippletest.net:51234'); //使用测试链公开节点XrpTool官方下载地址:http://sc.hubwiz.com/codebag/xrp-php-lib/。

  

3.2 调用RPC API

  

RpcClient的方法名直接对应Ripple的RPC API名称,例如,如下的代码调用server_info接口查询Ripple节点信息:

  

$ret = $client->server_info(); //调用RPC API:server_infoecho 'version => ' . $ret->info->build_version . PHP_EOL; //显示节点软件版本信息 有的RPC API调用需要传入一些参数,例如查询账户信息的account_info调用,这时需要将参数整理为关联数组传入RpcClient对象的同名方法:

  

$params = < //使用关联数组声明RPC API参数 'account' => 'rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn' //account: 要查询的账户 >;$ret = $client->account_info($params); //查询指定Ripple账户的详细信息echo 'balance => ' . $ret->account_data->Balance . PHP_EOL; //显示账户余额,单位:drop3.3 示例:使用RPC API转账XRP

  

如果你使用自己的Ripple节点,可以使用submit调用的Sign-and-Submit模式执行转账等交易。例如,使用下面的代码从Alice的账号向Bob的账号支付0.0123456 XRP:

  

$alice = "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"; //Alice的账户$bob = "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX"; //Bob的账户$amount = "123456"; //单位:drop$params = < "offline" => false, //需要节点签名 "secret" => "s████████████████████████████", //用于签名的密码 "tx_json" => < "TransactionType": "Payment", //交易类型:支付 "Account" => $alice, //发起账号 "Destination": $bob, //接收账号 "Amount" => $amount //支付数量,单位:drop >>;$ret = $client->submit($params); //签名并广播交易echo 'tx hash => ' . $ret->tx_json->hash . PHP_EOL; //交易哈希注意:默认情况下submit调用的sign-and-submit模式只允许在节点管理连接上调用,要正确执行 上面的代码,你需要使用管理连接创建RpcClient实例,或者为该节点启用公共签名支持。如果你 执行demo/rpcclient-demo.php,就会出现如下异常:

  

  

4、Credential

  

和其他区块链一样,Ripple也使用非对称密钥对来标识身份,不过它即支持经典的Secp256k1算法,也支持更新一些的Ed25519算法,XrpTool开发包分别使用CrdlSecp256k1类和CrdlEd25519类来表征这两种算法对应的Ripple身份凭证。

  

可以使用CrdlFacotry工厂类来离线创建新的Ripple密钥对和地址,或者使用Ripple密文来恢复之前创建的密钥对和地址。XrpTool对象的crdlFactory属性提供了预创建的CrdlFactory对象,也可以用如下的代码直接创建CrdlFactory对象:

  

use Xrp\Crypto\CrdlFactory;$cf = new CrdlFactory(); //创建身份凭证工厂对象4.1 创建新的身份凭证

  

使用generate()方法来创建一个新的随机密钥对并推导出相应的Ripple地址。例如,下面的代码使用Secp256k1算法创建一个Ripple身份凭证:

  

$credential = $cf->generate(); //使用secp256k1算法创建随机身份凭证//$credential = $cf->generate('secp256k1'); //同上,默认使用secp256k1算法echo 'private => ' . $credential->private . PHP_EOL; //显示身份凭证的私钥echo 'public => ' . $credential->public . PHP_EOL; //显示身份凭证的公钥echo 'address => ' . $credential->address . PHP_EOL; //显示身份凭证的地址类似的,下面的代码使用ed25519算法创建身份凭证:

  

$credential = $cf->generate('ed25519'); //使用ed25519算法创建随机身份凭证echo 'address => ' . $credential->address . PHP_EOL; //显示身份凭证的地址4.2 使用Ripple密文恢复身份凭证

  

如果持有身份凭证密文,那么可以使用fromSecret()方法来恢复对应的Ripple身份凭证。例如:

  

$secret = 'snfjzzfRtq3hPdZ2msjFUxRN1748B'; //Ripple身份凭证密文$credential = $cf->fromSecret($secret); //利用密码恢复身份凭证echo 'address => ' . $credential->address . PHP_EOL; //显示身份凭证的地址XrpTool官方下载地址:http://sc.hubwiz.com/codebag/xrp-php-lib/。

相关文章