前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ripple区块链对接PHP开发包【瑞波币/XRP】

Ripple区块链对接PHP开发包【瑞波币/XRP】

作者头像
用户1408045
发布于 2019-09-06 02:40:28
发布于 2019-09-06 02:40:28
1.8K00
代码可运行
举报
文章被收录于专栏:汇智网教程汇智网教程
运行总次数:0
代码可运行

XrpTool可以帮助PHP应用快速接入瑞波/Ripple区块链, 即支持部署自有Ripple节点的应用场景,也支持利用公开的Ripple节点广播离线裸交易的轻量级部署场景。XrpTool官方下载地址:http://sc.hubwiz.com/codebag/xrp-php-lib/

1、开发包概述

XrpTool主要包括以下特性:

  • 全功能的Ripple节点客户端,支持完整的RPC API开发接口
  • 支持离线生成Ripple密钥对和地址,支持Secp256k1和Ed25519密码学算法
  • 支持Ripple交易的离线序列化与离线签名
  • 支持瑞波币/XRP和自发行代币的直接转账,支持代币发行、币币交易、支票签发、资金托管等多种Ripple交易

XrpTool开发包运行在PHP 7.1+环境下, 当前版本1.0.0,主要类及关系如下:

XrpTool开发包的主要代码文件清单参见官网说明:http://sc.hubwiz.com/codebag/xrp-php-lib/

2、XrpTool

XrpTool是开发包的入口类,可以利用它快速组织并广播一个交易,或者访问开发包的其他类的预创建实例对象。

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

在XrpTool中,一个Ripple交易的执行包含以下环节:

  • 交易数据的组织,使用关联数组来组织交易数据
  • 交易数据签名与广播,使用XrpTool实例的transact()方法进行交易 预处理、序列化和签名,最后提交给节点广播到网络中
  • 等待交易确认

例如,下面的代码使用XrpTool完成瑞波币/XRP的直接支付交易:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use XrpTool\XrpTool;

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

//用密文恢复身份凭证
$credential = $tool->restoreCredential('snT3WxQbGLMAfqPhS9pYHM9gpib79');  //发起账号的身份凭证

//组织交易数据
$tx = [
  'TransactionType' => 'Payment',                                         //交易类型:支付
  'Account' => 'rfT5EnW5kfJNyLpUb6X9Do8HoUMvQKDrS8',                      //发起账号
  'Destination' => 'rnU5a7v51BV6znn8kq8jdGtZNDiMJxojcc',                  //接收账号
  'Amount' => '13500'                                                     //交易数量,单位:drop 
];

//交易序列化、签名、提交
$txid = $tool->transact($tx,$credential);                                 //提交给节点广播  
echo "tx hash => " . $txid . PHP_EOL;                                     //显示交易哈希

//等待交易确认
$validated = $tool->waitForTx($txid);                                     //默认超时:5秒
echo "tx validated => "  . $validated . PHP_EOL;                          //显示是否已确认

//查询接收账号的余额
$balance = $tool->getBalance($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表示代币接收账户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use XrpTool\XrpTool;

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

$issuer_address = 'rfT5EnW5kfJNyLpUb6X9Do8HoUMvQKDrS8';                 //发行账户地址
$issuer_secret = 'snT3WxQbGLMAfqPhS9pYHM9gpib79';                       //发行账户密文

$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对应的节点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use XrpTool\RpcClient;

$client = new RpcClient('http://localhost:51234');                //使用本地节点

注意:Ripple节点的RPC API的访问协议(http | https)与监听端口依赖于 配置文件。上面的代码假设本地Ripple节点RPC API已经配置了http协议访问,并且 在51234端口监听。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$client = new RpcClient('https://s1.ripple.com:51234');             //使用主链公开节点

或者创建一个连接测试链公开节点的RpcClient实例,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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节点信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ret = $client->server_info();                                    //调用RPC API:server_info
echo 'version => ' . $ret->info->build_version . PHP_EOL;         //显示节点软件版本信息 

有的RPC API调用需要传入一些参数,例如查询账户信息的account_info调用,这时需要将参数整理为关联数组传入RpcClient对象的同名方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$params = [                                                       //使用关联数组声明RPC API参数
  'account' => 'rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn'               //account: 要查询的账户    
];
$ret = $client->account_info($params);                            //查询指定Ripple账户的详细信息
echo 'balance => ' . $ret->account_data->Balance . PHP_EOL;       //显示账户余额,单位:drop

3.3 示例:使用RPC API转账XRP

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use Xrp\Crypto\CrdlFactory;

$cf = new CrdlFactory();                                          //创建身份凭证工厂对象

4.1 创建新的身份凭证

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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算法创建身份凭证:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$credential = $cf->generate('ed25519');                           //使用ed25519算法创建随机身份凭证
echo 'address => ' . $credential->address . PHP_EOL;              //显示身份凭证的地址

4.2 使用Ripple密文恢复身份凭证

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$secret = 'snfjzzfRtq3hPdZ2msjFUxRN1748B';                        //Ripple身份凭证密文
$credential = $cf->fromSecret($secret);                           //利用密码恢复身份凭证
echo 'address => ' . $credential->address . PHP_EOL;              //显示身份凭证的地址

XrpTool官方下载地址:http://sc.hubwiz.com/codebag/xrp-php-lib/

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
仿真软件哪个好?ABAQUS软件、CST软件介绍
在现代科技与工业领域,仿真软件已成为工程师和设计师的标配工作平台,其价值渗透于工程设计、工业制造、教育科研等关键领域。这类工具通过构建数字化模型模拟真实场景,助力用户实现设计优化、成本控制与教学创新—— 例如在航空航天领域,工程师可借助仿真软件预判飞行器气动性能;在汽车制造中,设计师能通过模拟碰撞测试优化车身结构,避免动辄百万的物理试验成本。
思茂信息
2025/06/18
650
仿真软件哪个好?ABAQUS软件、CST软件介绍
多物理场建模,实现高精度仿真计算 COMSOL Multiphysics 6.1
COMSOL Multiphysics 6.1是一款由COMSOL公司推出的多物理场建模和仿真计算软件,主要应用于机械、电气、热力学、化学等领域。该软件集成了多种高级的功能和工具,为用户提供了全方位的数字化设计解决方案。
用户10521990
2023/04/23
9360
多物理场建模,实现高精度仿真计算 COMSOL Multiphysics 6.1
物理场仿真研究 Comsol 软件安装包下载,Comsol 安装激活
在当今数字化时代,仿真分析越来越重要,尤其在科学研究、工程设计和教育教学领域。Comsol Multiphysics 软件是一款功能强大的多物理场仿真软件,它提供了丰富的物理建模和仿真工具,为用户提供了一种完整的科学研究和工作解决方案。本文将探讨 Comsol 软件的主要特色功能和使用方法,并提供一个具体的案例,演示如何使用 Comsol 软件进行仿真分析。
用户10436734
2023/04/20
4060
comsol快速入门教程
我自己参照官网的教程,写了个比较通俗易懂的入门教程,字多图多慎看(大三的时候写的)。
desperate633
2018/08/23
2.2K2
数字化仿真有新起点COMSOL Multiphysics6更强大实用性和可扩展性
COMSOL Multiphysics 6是一款由COMSOL公司开发的多物理场仿真软件,可用于模拟和优化工程、制造、科学研究和设计领域。该软件可以处理多种物理场,如热、电、磁、声、流体以及结构等物理场。COMSOL Multiphysics 6是一款高度灵活的仿真软件,使其可以适应广泛的领域和工程应用。
用户10480228
2023/04/07
5010
数字化仿真有新起点COMSOL Multiphysics6更强大实用性和可扩展性
Comsol Multiphysics (多物理模拟仿真软件)Comsol Multiphysics安装下载,绿色安装包
作为一款著名的物理建模和仿真软件,COMSOL Multiphysics全系列为工程师和科学家提供了全面的模拟和优化工具,支持多种物理现象、材料、能源和工程领域。下面将介绍COMSOL Multiphysics全系列的主要模块和功能。
网创青年阿金
2023/04/21
8700
Comsol Multiphysics (多物理模拟仿真软件)Comsol Multiphysics安装下载,绿色安装包
仿真工具 Abaqus 2022中文版下载安装教程+Abaqus全版本安装包
Abaqus 2022是世界上最受欢迎和广泛使用的有限元分析软件之一,它为数值分析和工程仿真带来前所未有的效率和精度。以下是Abaqus 2022的主要特点:
用户10521990
2023/04/25
7000
仿真工具 Abaqus 2022中文版下载安装教程+Abaqus全版本安装包
多物理场仿真软件COMSOL6.1最新激活版,COMSOL6.1下载安装激活
COMSOL是一款基于多物理场的仿真模拟软件,在全球各著名高校,COMSOL Multiphysic已经成为教授有限元方法以及多物理场耦合分析的标准工具,在全球500强企业中,COMSOL Multiphysic被视作提升核心竞争力,增强创新能力,加速研发的重要工具。COMSOL包含了结构力学模块、化学工程模块、热传递模块、CAD导入模块、地球科学模块、射频模块等。
用户10436734
2023/04/13
7650
高级数值仿真软件下载Multiphysics下载:COMSOL Multiphysics 6.1
COMSOL Multiphysics是一款多物理场仿真软件,它可以用于模拟和优化各种工程和科学应用,例如结构力学、电磁场、流体力学、化学反应、热传导等。下面是COMSOL Multiphysics 6.1的功能介绍和安装配置:
用户10519159
2023/04/25
6300
高级数值仿真软件下载Multiphysics下载:COMSOL Multiphysics 6.1
COMSOL Multiphysics 6.0高性能模拟计算软件,打造精准科学模型
COMSOL Multiphysics 6.0是一款用于多物理场建模和仿真计算的软件,该软件是由瑞典COMSOL公司开发,旨在帮助工程师、研究人员和科学家快速准确地解决复杂的科学和工程计算问题。COMSOL Multiphysics 6.0支持多种应用领域,包括机械力学、声学、电磁学、流体力学、化学反应等。
用户10313071
2023/04/19
8450
COMSOL Multiphysics 6.0高性能模拟计算软件,打造精准科学模型
comsol和ansys哪个好?数值仿真软件COMSOL中文版下载安装教程
首选COMSOL,界面化的建模,结构式的场分析流程,上手要远远优于ANSYS。comsol在学术界有广大的用户基础,而ANSYS在工业界的地位不可撼动。
用户10436734
2023/04/01
6K0
comsol和ansys哪个好?数值仿真软件COMSOL中文版下载安装教程
物理场仿真优化Comsol软件安装包下载,Comsol 6.1中文版下载安装
Comsol Multiphysics是一款由Comsol公司开发的专业有限元分析软件平台,旨在解决工程和科学领域中多物理场及其相互作用问题。其可广泛应用于电力、电子、机械、热力学等领域,能够进行多物理场的耦合仿真及优化。
用户10413399
2023/04/18
6010
Comsol 软件下载,计算机仿真软件Comsol 6.1激活版下载安装教程
Comsol Multiphysics是一款广泛应用于科学计算和工程领域的计算机仿真软件。该软件具有多物理场耦合、自适应网格划分等强大的功能,可支持二维和三维物理场模拟,并被广泛应用于电子、机械、化学、生物等领域的工程设计、优化和分析。由于Comsol软件具有较为复杂的模型设置和求解过程,而且是一款国际化软件,因此在中文市场的推广和应用仍然面临一些挑战。
用户10410624
2023/04/12
1.3K0
COMSOL 5.6:打造多物理场仿真新标杆+全版本安装包
COMSOL Multiphysics是一种先进的工程仿真软件,运用多物理场建模技术进行多学科领域的仿真和分析,可以对各种应用中的现象进行建模和求解。COMSOL使用基于有限元分析(FEA)的方法进行仿真计算,提供高度灵活的建模环境以及多种求解方式和后处理功能。COMSOL Multiphysics 5.6是该软件的最新版本,增加了许多新功能和改进,使其成为目前市场上最强大的工程仿真软件之一。
用户10480228
2023/04/16
5760
COMSOL 5.6:打造多物理场仿真新标杆+全版本安装包
有限元分析软件入门:哪款最易上手?
如果你是一位初学者,对于有限元分析(FEA)这个领域充满好奇,想要了解哪款软件易上手、功能强大,那么本文就是为你准备的。在这里,我们将引导你了解有限元分析的基本概念,并推荐几款适合初学者的优秀软件。
思茂信息
2025/06/13
1590
有限元分析软件入门:哪款最易上手?
comsol软件是干嘛的?多物理场仿真Comsol软件安装包下载
Comsol是一个基于有限元法的多物理场仿真软件。它是由Comsol公司开发的一种高级技术计算语言和交互式环境。在工程、物理、化学、生物和医学等领域中都有着广泛的应用。本文将探讨Comsol的独特竞争力和使用方法,并通过实例案例进行详细阐述。
用户10410624
2023/04/22
5360
多体动力学模拟仿真系统软件Adams,Adams软件中文版下载安装教程
ADAMS软件使用交互式图形环境和零件库、约束库、力库,创建完全参数化的机械系统几何模型,其求解器采用多刚体系统动力学理论中的拉格朗日方程方法,建立系统动力学方程,对虚拟机械系统进行静力学、运动学和动力学分析,输出位移、速度、加速度和反作用力曲线。ADAMS软件的仿真可用于预测机械系统的性能、运动范围、碰撞检测、峰值载荷以及计算有限元的输入载荷等。
用户10436734
2023/04/01
9560
多体动力学模拟仿真系统软件Adams,Adams软件中文版下载安装教程
HyperWorks 2022中文纯净绿色版
HyperWorks是一款功能强大的开放式架构仿真软件。Altair HyperWorks 2020中文版拥有先进的技术以及高性能、高效和创新的产品,为用户提供了设计、仿真和制造等服务。Altair HyperWorks软件支持电磁分析设计、材料建模制造、多物理场分析等功能,用户可以进行庞大且复杂的有限元模型创建操作。
用户10518048
2023/04/19
8440
HyperWorks 2022中文纯净绿色版
Comsol软件是干嘛的?Comsol多物理场仿真软件下载安装,功能介绍
在现代科学技术的发展中,模拟软件是不可或缺的一部分。理论与实践相结合,计算机仿真软件可以帮助我们更好地理解、预测、创新和优化各种物理现象和工程应用。本文将以Comsol Multiphysics® 为例,介绍其独特功能,并探讨其在实际应用中的价值。
优木软件
2023/05/06
8770
Python 科学计算与数据科学核心内容大纲
密码学人CipherHUB
2025/03/04
1653
Python 科学计算与数据科学核心内容大纲
推荐阅读
相关推荐
仿真软件哪个好?ABAQUS软件、CST软件介绍
更多 >
LV.9
这个人很懒,什么都没有留下~
目录
  • 1、开发包概述
  • 2、XrpTool
    • 2.1 交易的组织、签名与广播
    • 2.2 支持的交易类型
    • 2.3 示例:代币发行与转账
  • 3、RpcClient
    • 3.1 实例化
    • 3.2 调用RPC API
    • 3.3 示例:使用RPC API转账XRP
  • 4、Credential
    • 4.1 创建新的身份凭证
    • 4.2 使用Ripple密文恢复身份凭证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档