区块链开源项目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

相关文章

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

MySQL中慢SQL优化方法的完整指南

《MySQL中慢SQL优化方法的完整指南》当数据库响应时间超过500ms时,系统将面临三大灾难链式反应,所以本文将为大家介绍一下MySQL中慢SQL优化的常用方法,有需要的小伙伴可以了解下... 目录一、慢SQL的致命影响二、精准定位问题SQL1. 启用慢查询日志2. 诊断黄金三件套三、六大核心优化方案方案

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步