比特币代码分析7 交易校验

每一个收到交易,比特币节点都验证该交易,有效的交易将被传递到各个附近节点,这将确保只有有效的交易才会在网络中传播, 而无效的交易将会在第一个节点处就被废弃。
校验选项列表:
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表
1、交易语法与数据是否正确
2、输入与输出列表都不能空(>=1)
3、交易大小 < max_block_base_size(1M)
4、0 < 输出值与总量 < 2100万
5、输出点中hash!=0,N!=-1(哈希值不能为零、序列号N不能为-1)
6、nlocktime<int_max
7、交易字节>=100字节
8、解锁脚本(scriptSig)只能够将数字压入栈中,并且锁定脚本(scriptPubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)
9、池中或位于主分支区块中的一个匹配交易必须是存在的
10、对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝
11、验证孤立交易
12、coinbase交易需经过100个确认
13、输出必须存在,且未被花费
14、0< 输入值与总量 < 2100万
15、如果输入值的总和小于输出值的总和,交易将被中止
16、交易费用太低,则交易被拒绝
17、每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证

原文地址:http://blog.51cto.com/13878196/2327595

时间: 2024-11-08 12:44:44

比特币代码分析7 交易校验的相关文章

比特币代码分析4 节点发现机制

当程序第一启动时,它并不知道任何活跃节点的ip地址.为了发现一些全节点的ip地址,他们会查询硬编码在比特币内核或BitCoinJ中的,一个或多个DNS域名,在返回的结果中应该包含一个或多个DNS A记录,里面有一些可接受新连接的全节点的ip地址.DNS 种子由比特币社区成员维护.其中一部分提供动态DNS种子服务器,它通过扫描比特币网络,自动获取活动节点的ip地址:其他的提供一些静态DNS种子,这需要手动更新,不过他们很有可能提供不活跃节点的ip地址.不管是动态的,还是静态的DNS种子,如果节点在

比特币代码分析11 比特币存储机制

比特币存储机制 比特币存储系统由两部分组成: kv 数据库(levelDB)索引和普通数据文件.普通文件用于存储区块链数据,kv 数据库用于存储区块链元数据.用于存储区块链数据的普通文件以 blk00000.dat , blk00001.dat 文件名格式组成.其中 index 目录存储用于存储区块元数据.普通区块数据文件 为了快速检索区块数据,每个文件的大小是128 M Bytes.区块里的数据(区块头和区块里的所有交易)都会序列成字节码的形式写入 dat 文件中.在序列化的过程中,如果检测到

比特币代码分析1 整体架构

Bitcoin 比特币官方客户端有两个版本:一个是图形界面的版本,通常被称为 Bitcoin(首字母大写),以及一个简洁命令行的版本(称为 bitcoind).命令行可以有两种运作方式:节点,RPC命令.节点是持续运行,RPC命令是一次性运行. 原文地址:http://blog.51cto.com/13878196/2323180

比特币代码分析5 挖矿代码分析

本文描述矿工处理线程,通过本文学习,可以了解矿工挖矿的大致流程.主要包含挖矿费用交易的产生.当前交易池的打包处理,工作量证明等相关内容.流程图(参考网络)如下所示:. 矿工处理函数1.void ThreadBitcoinMiner(void* parg)2.{ vfThreadRunning[3] = true; CheckForShutdown(3); try { bool fRet = BitcoinMiner(); printf("BitcoinMiner returned %s\n\n\

比特币代码分析3 命令调用框架

原文地址:http://blog.51cto.com/13878196/2325373

MPC8313ERDB在Linux从NAND FLASH读取UBoot环境变量的代码分析

[email protected] 一.故事起因 因为文件系统的增大,已经大大的超出了8MB的NOR FLASH,而不得不把内核,文件系统和设备树文件保存到NAND FLASH上.但是因为使用的是RAMDISK,而无法保存一些个别的配置和参数,最简单的需要就是设置系统的IP了,,, 要使用统一的RAMDISK,而实现LINUX启动之后,设置成不能的参数功能,比较方便的就是从UBOOT把这些参数传递过去,这个得到了大家的认证,我们可以直接添加启动参数,然后在内核里面读出来,这种方法比较方法,唯一不

Device Tree(三):代码分析【转】

转自:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html Device Tree(三):代码分析 作者:linuxer 发布于:2014-6-6 16:03 分类:统一设备模型 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因) 2.Device Tree的基础概念(请参考DT基础概念) 3.ARM linux中和De

微信公众平台开发(二) 微信公众平台示例代码分析

原文地址:http://www.cnblogs.com/mchina/archive/2013/06/07/3120592.html 一.摘要 微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下. 二.获取代码 微信官网:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip 三.分析代码 完整代码如下: <?php /** * wechat php test */ //define your

【转】Device Tree(三):代码分析

原文网址:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因) 2.Device Tree的基础概念(请参考DT基础概念) 3.ARM linux中和Device Tree相关的代码分析(这是本文的主题) 本文主要内容是:以Device Tree相关的数据流分析为索引,