交易(transaction)

以太坊源码阅读【Transaction(交易模块)】 Eth Transaction结构 Transaction结构的定义之处:./core/types/transaction.go // Transaction is an Ethereum transaction. type Transaction struct { inner TxData // Consensus contents of a transaction time time.Time // Time first seen locally (spam avoidance) 阅读详情

1. Owner0 先查到 Owner1 的公钥。用 Owner1 的公钥(Public Key)把汇款详情加密。这样,只有 Owner1 本人用自己的私钥(Private Key),才能打开加了密的汇款详情。在图例中,没有画汇款详情。不过这个小小的叙述的疏忽无妨大雅。

 

2. 为了方便 Owner1 验证这笔汇款的确来自 Owner0,而不是别人,Owner0 发出的汇款单里,除了有加了密的汇款详情,还有 Owner0 的数字签名(Signature)。Owner1 拿到汇款时,为了验证这笔汇款的确来自 Owner0,他可以用 Owner0 的公钥,来验证汇款单中 Owner0 的数字签名。

 

3. Owner0 发出汇款单时,汇款单不仅仅投递到 Owner1,而且还要广而告之,任何人只要愿意参与 BitCoin 审计,都可以收到全球所有人发出的所有汇款单。

 

4. 沿用 1、2、3 的原理,Owner1 给 Owner2 汇款,然后 Owner2 给 Owner3 汇款。BitCoin 通过 Hash 机制,把涉及同一枚 BitCoin 的所有汇款交易(Tranaction)串连起来,目的是为了追查重复付款(double spending)的欺诈行为。

 

 

【2】 支付(payment)

 

当付款人(payer)向收款人(payee)发出汇款交易(transaction)后,支付过程(payment)并没有完成。直到收款人签收了汇款以后,支付过程才正式结束。

 

在收款人接受汇款以前,他必须确认汇款人没有重复付款(double spending)。这就类似于我们接受纸币前,最好验证一下纸币是不是假钞一样。

 

BitCoin 验证重复付款的办法,是靠群众检举。当收款人收到汇款时,他把汇款单广而告之。审计站点收到广而告之的汇款单时,会检查汇款单中涉及的 BitCoin,是否出现在其它汇款单中,是否被重复付款。如果出现这种重复付款,审计站点会检举,并通知收款人拒绝签收汇款。

为了提高审计效率,BitCoin 把多个交易(Transaction)合并成一个块(Block),同时用 Merkle Tree(又称 Hash Tree)[3],把这些交易详情组织起来。

 

   如果想检查一个 Block 里是否包含有某个 Transaction,最简单的办法是找到合适的私钥,把 Block,以及其中包含的 Transactions,解密打开,然后逐一核对。很显然,这样的做法,既浪费时间,又很不安全。

 

   使用 Merkle Tree 的好处在于,不需要解密开包,只需要把 Transaction 也 Hash 一下,然后把哈希结果与 Merkle Tree 中各个中间节点的哈希值,依次对比,就能够很轻松地确定 Merkle Tree 中,是否包含着指定的 Transaction,如果有,它是哪一个叶子节点。

 

Bitcoin钱包收款和转账

比特币钱包余额需要统计所有钱包地址对应的UTXO

Simplified Payment Verification (SPV):节点无需下载所有的区块数据,而只需要加载所有区块头数据(block header的大小为80B),即可验证这笔交易是否曾经被比特币网络认证过。

布隆过滤器(Bloom Filter):过滤掉那些不包含有目标地址的交易信息,这一步能避免掉大量不相关的数据下载

备份更容易。按照比特币的原则,尽量不要使用同一个地址,一个地址只使用一次,这样会导致频繁备份钱包。HD钱包只需要在创建时保存主密钥,通过主密钥可以派生出所有的子密钥。

2、私钥离线更安全。主私钥离线存储,主公钥在线使用,通过主公钥可以派生出所有的子公钥。例如:给每个商品提供一个收款地址。

3、利于管理,权限控制。树状结构类似于公司的组织架构,可以给各个部门指定一个密钥分支。

4、记账。只使用公钥即可记账。

钱包最佳实践

  • 使用助记词(BIP39)
  • 使用层级确定性钱包(HD Wallets)(BIP32)
  • 使用多目的HD Wallets(BIP43)
  • 使用多币种,多账号的HD Wallets (BIP44)

比特币钱包地址创建过程

1、生成128bit~256bit作为私钥

2、通过secp256k1椭圆曲线算法得到私钥对应的公钥

3、将公钥进行SHA-256,得到公钥Hash

4、将3的结果进行RIMEMD-160

5、将4中结果添加1个字节版本号

6、将5中结果进行两次SHA-256,取前4个字节作为checksum

7、将6中结果添加到5中结果的末尾

8、将7中结果进行Base58,结果为比特币地址

Block Chain:区块链

UTXO: Unspent Transaction Output,未花费的交易输出

Genesis Block: 块0,创世块

SPV: Simplified Payment Verification,简单支付验证

BIP: Bitcoin Improvement Proposal,比特币改进提案

Proof Of Work: 工作量证明
 

构建业务交易DSL:dry-transaction精通指南 业务交易DSL(领域特定语言)是一种专为某一特定业务领域设计的编程语言。它允许开发者以一种更接近人类自然语言的方式来表达业务逻辑,这不仅提高了代码的可读性,还增强了开发过程的效率。业务交易DSL的核心是其简洁和表达性,使得非技术人员也能参与到业务逻辑的讨论和设计中。通过定义专门的语法和词汇,DSL可以将复杂的业务操作简化为易于管理和理解的模块。此外,DSL的使用使得代码维护成本降低,因为它可以清晰地反映出业务规则的变化。在业务规则频繁变动的环境下,这种灵活性显得尤为重要。 阅读详情

相关推荐

一个简单的java CS程序

一个简单的CS模型,练习java网络编程的开始

解决replacement transaction underpriced以太坊交易异常

  replacement transaction underpriced异常 问题概述 以太坊系列(ETH&ETC)在发送交易有三个对应的RPC接口,分别是ethsendTransaction、ethsendRawTransaction和personal_sendTransaction。这三个接口发送(或构造发送内容时)都需要一个参数nonce。官方文档对此参数的解释是:整数类型,...

4万+

智能车小白也能懂:手把手教你用LM358和工字电感搭建电磁循迹模块(附PCB设计避坑)

本文详细介绍了如何利用LM358运放和工字电感搭建智能车电磁循迹模块,从电感选型、电路设计到PCB布局和焊接调试,提供全流程实战指南。特别针对新手常见问题,如信号干扰、电路饱和等,给出具体解决方案和参数配置,帮助智能车比赛爱好者快速掌握电磁循迹技术。

weixin_30307921的博客 401

从源代码分析以太坊replacement transaction underpriced异常

项目中有使用到以太坊转账功能,在有一天以态坊网络堵塞,转帐报了replacement transaction underpriced异常,根据这个异常关键词搜索以态坊源码,发现是这里报错的。 func (pool *TxPool) add(tx *types.Transaction, local bool) (replaced bool, err error) { //---------省去前...

phil_code的博客 7186

从交换机安全配置,看常见局域网攻击

前言 构建零信任网络,自然离不开网络准入(NAC),这就涉及到交换机的一些安全测试,于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击,那么下面提到的各种攻击方式,自然是建立在交换机安全配置之上来说的。我们通过h3c官方提供的《H3C 交换机安全加固手册》和《安全配置指导》,从这两份手册可以看出交换机支持的安全配置非常多,基本已经覆盖了各种我们熟知局域网攻击。下面就挑几个典型的攻击方式进行演示。 arp欺骗 【一>所有资源获取&lt

kali_Ma的博客 1万+

从ST转国产ARM必看:GD32/APM32等5款芯片的SWD下载全攻略(含CH32特殊处理)

本文为从STM32转向国产ARM芯片的开发者提供了详细的SWD下载调试指南。针对GD32F103C8T6、APM32F103C8T6等五款热门国产芯片,详细说明了如何利用已有的ST-Link工具和Keil MDK环境进行程序烧录,并特别介绍了CH32F103芯片所需的独立器件库安装等特殊处理方法,帮助开发者实现平滑迁移,提升开发效率。

weixin_29195615的博客 278

通过修改mateMask的nonce值修复replacement transaction underpriced的问题

mateMask钱包设置

gambool的博客 2174

CLCD 中国生命周期基础数据库使用攻略

CLCD 是公共建筑碳排放计算的理想选择,其本地化数据可显著提高计算准确性。

hy行者勇哥的博客 2686

24.Linux:嵌入式sqlite3数据库事务理解以及实例操作 (转载)

[Sqlite] 嵌入式数据库事务理解以及实例操作  来自:http://www.runoob.com/sqlite/sqlite-transaction.html SQLite 事务(Transaction) 事务(Transaction)是一个对数据库执行工作单元。事务(Transaction)是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动

xushaozhang的专栏 1026

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 582

YOLO-World:从入门到实战的多模态目标检测全指南

想象一下,你给模型一张“公园”的图片,再输入文字“红色的郁金香”,它能直接在图中框出所有红色郁金香的位置——这就是多模态目标检测:结合图像视觉信息和文本语义信息,同时完成“是什么”(分类)和“在哪里”(定位)的任务。传统目标检测(如YOLOv5、YOLOv8)只能识别预定义的类别(比如训练时学过“猫”“狗”),但多模态目标检测摆脱了“类别预定义”的限制,只要文本能描述,它就能检测,这就是“开放词汇检测(Open-Vocabulary Detection)”的魅力。

know_F0727的博客 205

以太坊交易异常 replacement transaction underpriced

在以太坊交易中,在使用同一个地址连续发送交易时,每笔交易往往不可能立即到账, 当前交易还未到账的情况下,下一笔交易无论是通过eth.getTransactionCount()获取nonce值来设置,还是由节点自动从区块中查询,都会获得和前一笔交易同样的nonce值,这时节点就会报错Error: replacement transaction underpriced。应等待上一次交易成功时再执行下一...

qq_31953961的博客 3068

NTN(三) Timing

这篇看下k_offset和k_mac,如38.300所述,k_offset是配置的调度偏移量,需要大于或等于service link RTT和Common TA之和;k_mac 是配置的偏移量,需要大于或等于 RP 和 gNB 之间的 RTT。 相关参数会通过RRC层NTN-config配置,其中的cellSpecificKoffset-r17和kmac-r17主要用于各种Timing场景的偏移。 kmac:如果DL和UL frame timing 在 gNB端未对齐,网络端

asd199086的博客 4828

科普:元交易 Meta-Transaction

科普:元交易 Meta-Transaction 由于公共区块链是一个去中心化的开放网络,这使得区块链用户必须具备自行保管钱包私钥的能力以及其所对应的安全意识。一方面,这对追求私有财产神圣不可侵犯的进阶用户来说是一件极具有吸引力的事情,但对于大多数的普通用户来说,势必会造成很多的不便与压力。 基于公共区块链网络开发的去中心化产品与古典互联网软件或者服务相比,在用户交互式上发生了激烈碰撞,甚至是截然相反的操作。区块链世界,用户在与区块链网络进行的每一次交互,都需要自己主动进行,并且要对每一次交互进行私.

1266

华为OD机试 - 直捣黄龙 - 广度优先搜索BFS(Python/JS/C/C++ 新系统 200分)

从样例 1 可知:5 / 2,2 -> 输出 2 9如果按“移动步数”计算应该是 8,但题目输出是 9,说明这里的“路径长度”统计的是 路径上经过的节点数量。最短路径条数:ways[end]路径长度:dist[end] + 1。

学Java,找哪吒 125

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

fuels-ts 脚本交易准备指南:为 Sway Script 配置 Call/Transaction 参数并预取交易请求

在 Fuel 的 TypeScript SDK(fuels-ts)中,Script(脚本)是与 Contract 并列的一类链上程序类型:它以可执行字节码的形式一次性在链上运行并返回单个任意类型的值。与调用 Contract 类似,你可以在提交 Script 交易之前精细化地控制它的行为——配置**调用参数(Call Parameters)**与**交易参数(Transaction Paramet

gitblog_00642的博客 1048

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

EOSIO源码分析 - 交易transaction投递执行流程

带你深入理解eosio合约的执行机制,如果我们自己写个区块链,需要考虑哪些方面

whg1016的专栏 506

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

交易Transaction

比特币源码研读(3)数据结构-交易Transaction上一篇:数据结构-区块Block首先,通过blockchain.info查看一笔交易的基本数据结构:blockchain.info_1blockchain.info_2blockchain.info_3源码初窥代码路径: bitcoin/src/privateCOutPut/** An outpoint - a combination of ...

TuxedoLinux的博客 970

EOS cleos get transaction 获取交易

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33962923的博客 487

交易类型Transaction

文章目录TransactionDebitTransactionReceiveTransactionDepositPaycenterCollectionEditableCollectionInternalDebitTransactionCreditTransactionInternalCreditTransactionAccountantRefund Transaction 交易 DebitTran...

Qbit编程学习笔记 1028

cleos convert unpack_transaction 命令详解:将打包交易还原为明文签名 JSON

`cleos convert unpack_transaction` 是 EOS(eosio 开源智能合约平台)客户端工具 cleos 中 `convert` 子命令族的一员,用于把网络上传输的**打包交易(packed transaction)JSON 还原为人类可读的明文签名交易 JSON**,是调试交易、核对签名数据与检查链上交易内容的实用工具。读完本文,你将掌握该命令的完整语法、参数含义、

gitblog_01042的博客 186

EOSIO cleos push transaction 命令详解:推送任意 JSON 交易到链上

`cleos push transaction` 是 EOSIO 生态中 cleos 客户端提供的底层交易提交工具,用于把一段完整的、以 JSON 形式描述的任意交易直接推送到区块链网络执行。与 `push action`(单 action 快捷方式)不同,本命令面向高级用户与开发者,可直接操作包含多 action、上下文自由数据、延迟执行等复杂结构的完整交易对象。阅读完本文,你将掌握该命令的位置

gitblog_01042的博客 342

transaction-fraud-detection:实时交易欺诈检测

transaction-fraud-detection:实时交易欺诈检测 在当下信息化社会,交易欺诈成为金融行业面临的一大挑战。transaction-fraud-detection 是一个专注于预测交易是否为欺诈的数据科学项目,为金融交易安全提供了有力保障。 项目介绍 transaction-fraud-detection 项目通过构建机器学习模型,对交易数据进行分析,预测交易是否存在欺诈行为。...

gitblog_00528的博客 419

safe-transaction-service:实时跟踪Safe合约交易的安全服务

safe-transaction-service:实时跟踪Safe合约交易的安全服务 项目介绍 Safe Transaction Service 是一个开源项目,旨在实时跟踪通过Safe合约发送的交易。Safe合约是一种多签名钱包,它允许多个参与者共同管理资金,并确保所有交易都需要多个签名者的同意才能执行。该项目通过监听区块链事件和交易跟踪,自动索引交易,无需手动通知服务有关交易的信息。 项目技术...

gitblog_00185的博客 798

SAP 业务交易事件BTE(Business Transaction Event)

业务交易事件BTE BTE是什么,当然不是BT的ERP, E文全称Business Transaction Event,业务交易事件,我们知道一般的增强(Tcode:SMOD|CMOD)依旧使用ABAP,BTE则可提供了RFC调用其它产品的可能(Tcode:FIBF),举一个检查物料主数据的实例说明BTE用法,简化为三个步骤. 第一步:建立附加产品(Tcode:BF24) 图1,建立产品

~ Caesar's wish书屋 ~ 1089

Aptos 交易执行层在 MonoMove VM 上的落地:aptos-transaction-executor 源码级解析

本指南以 `third_party/move/mono-move/aptos-transaction-executor` 目录下 [AGENTS.md](https://link.gitcode.com/i/279c9f1a06efeb2fdf225f2fdf4f3a62)(经 [CLAUDE.md](https://link.gitcode.com/i/a3de9ea108b2b303e375a

gitblog_00961的博客 10
上一篇: 闭包
下一篇: 数字签名
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值