区块链开源项目Ripple三、交易的完整生命周期

2024-06-06 18:38

本文主要是介绍区块链开源项目Ripple三、交易的完整生命周期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

修改区块链的唯一方法是提交交易,待交易通过共识后即可写入区块链,同时修改区块,下面对整个交易的生命周期做详细说明。

rippled底层提供了交易提交的API(详细请参考https://ripple.com/build/rippleapi):submit 后面跟交易的已签名BLOB,签名可以掉调用rippled的RPC命令Sign,也可直接用submit 后面跟私钥。不过这种方式一般只在笔者做内部测试用,正式给客户使用时绝不可把私钥提交到服务器上,这样违背了“去中心化”的初衷,在笔者的实际开发中,一般用Ripple-lib从当调用的中间层,通过ws与底层通讯,下面以调用RIpple-LIb脚本调用为例,先介绍二个API

  1.preparePayment(address, payment,option)

  2.sign(prepared.txJSON, secret);

第一个对交易payment校验,填上必须的字段,如费用,区块序号和账户序号等。

第二个对用私钥对交易签名。返回值就可以用submit提交。

有几个注意的地方:

1.区块序号和账户序号

LastLedgerSequence:上一个区块的序号,若干个区块构成区块链,每一个区块对应一个递增的序号。

  Sequence:账户序号 区块链上有若干账号,每一个账号的交易序号都是从1开始递增。

2.共识达成的最大区块序号

ripple-lib脚本发送交易时,preparePayment可以有三个参数,第一个参数:公钥 第二个参数,交易JSON,第三个字段,限制选项。限制选项中有个maxLedgerVersion,这个意为达成共识的最大区块序列号,如果在这个区块上还没有达成的话,那么交易失效。

提交到本地后,本地先验证交易的合法性,比如必须字段是否已经填写(参看交易的必须字段参考在src\ripple\protocol\impl\TxFormats.cpp)

,这几步对应文件src\ripple\app\tx\impl\Payment.cpp,判断结构非常清晰,123步骤逐渐深入).

本地验证通过后,启动一个工作者线程advanceThread(对应文件src\ripple\app\ledger\impl\LedgerMaster.cpp),里面调用doAdvance,这个函数以后介绍同步还会详细说明,对于本地验证通过后的交易,发布到网络上参与共识。

共识通过后,各节点取得这个区块,写到本地数据库中。

自此,一个交易的完整生命周期结束。


这篇关于区块链开源项目Ripple三、交易的完整生命周期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036911

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.