- 浏览: 761424 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
0.区块结构
Magic no 魔数 总是0xD9B4BEF9 4字节
BlockSize 区块大小 4字节
BlockHeader 区块头 80字节
TransactionCount 交易数量 1-9字节
Transactions 交易
1.区块头一共80字节,uint256是32个字节
class CBlockHeader
{
public:
// header
int32_t nVersion;// 版本
uint256 hashPrevBlock;//前一个区块的hash
uint256 hashMerkleRoot;// Merkle树根
uint32_t nTime;// 时间戳
uint32_t nBits;// POW难度
uint32_t nNonce;// 要找的随机数
}
//输入一共104字节,static不在结构体内计算
class CTxIn
{
public:
COutPoint prevout;//上一笔交易输出位置(通过hash定位到交易,通过索引定位到vout) 36字节
CScript scriptSig;//解密脚本(私钥),对应签名的钥匙 32字节
uint32_t nSequence;//序列号 4
CScript prevPubKey;//前一个公钥脚本 32
//规则1:如果一笔交易中所有的SEQUENCE_FINAL都被赋值了相应的nSequence,那么nLockTime就会被禁用
static const uint32_t SEQUENCE_FINAL = 0xffffffff;
//规则2:如果设置了这个变量,那么规则1就失效了
static const uint32_t SEQUENCE_LOCKTIME_DISABLE_FLAG = (1 << 31);
//规则3:如果规则1有效并且设置了此变量,那么相对锁定时间就为512秒,否则锁定时间就为1个区块
static const uint32_t SEQUENCE_LOCKTIME_TYPE_FLAG = (1 << 22);
//规则4:如果规则1有效,那么这个变量就用来从nSequence计算对应的锁定时间
static const uint32_t SEQUENCE_LOCKTIME_MASK = 0x0000ffff;
static const int SEQUENCE_LOCKTIME_GRANULARITY = 9;
};
//输出一共56字节
class CTxOut
{
public:
CAmount nValue;//输出金额 8
CScript scriptPubKey;//锁定脚本,提供了地址而生成的锁 32
int nRounds;//dash:和匿名发送相关 4
int64_t nUnlockedHeight;//safe:解锁高度 8
};
//交易一共96字节,空vector占28
class CTransactions
{
private:
const uint256 hash;
public:
static const int32_t CURRENT_VERSION=SAFE_TX_VERSION_2;
static const int32_t MAX_STANDARD_VERSION=SAFE_TX_VERSION_2;
const int32_t nVersion;// 版本
const std::vector<CTxIn> vin;// 交易输入集合
const std::vector<CTxOut> vout;// 交易输出集合
const uint32_t nLockTime;// 锁定高度
};
一笔交易的最大大小是有限制的,比如说100kb
static const unsigned int MAX_STANDARD_TX_SIZE = 100000;
2.分层确定性(HD)密钥创建和传输协议(BIP32),允许从父密钥的层次创建子密钥。使用 HD 协议的钱包称为 HD 钱包
3.在 HD 钱包中,该密钥用于生成子密钥。该密钥可能是私钥或公钥,且密钥的生成可能也需要链编码
4.硬分叉,软分叉,分叉
硬分叉:相当于一次大的升级,端口,魔数什么的都变了,未升级的节点不能共识确认新的区块
软分叉:相当于一次小的升级,可向后兼容,未升级的节点也可以确认新的区块
分叉:同时出了块,然后矿工各种基于这些块向后挖
Magic no 魔数 总是0xD9B4BEF9 4字节
BlockSize 区块大小 4字节
BlockHeader 区块头 80字节
TransactionCount 交易数量 1-9字节
Transactions 交易
1.区块头一共80字节,uint256是32个字节
class CBlockHeader
{
public:
// header
int32_t nVersion;// 版本
uint256 hashPrevBlock;//前一个区块的hash
uint256 hashMerkleRoot;// Merkle树根
uint32_t nTime;// 时间戳
uint32_t nBits;// POW难度
uint32_t nNonce;// 要找的随机数
}
//输入一共104字节,static不在结构体内计算
class CTxIn
{
public:
COutPoint prevout;//上一笔交易输出位置(通过hash定位到交易,通过索引定位到vout) 36字节
CScript scriptSig;//解密脚本(私钥),对应签名的钥匙 32字节
uint32_t nSequence;//序列号 4
CScript prevPubKey;//前一个公钥脚本 32
//规则1:如果一笔交易中所有的SEQUENCE_FINAL都被赋值了相应的nSequence,那么nLockTime就会被禁用
static const uint32_t SEQUENCE_FINAL = 0xffffffff;
//规则2:如果设置了这个变量,那么规则1就失效了
static const uint32_t SEQUENCE_LOCKTIME_DISABLE_FLAG = (1 << 31);
//规则3:如果规则1有效并且设置了此变量,那么相对锁定时间就为512秒,否则锁定时间就为1个区块
static const uint32_t SEQUENCE_LOCKTIME_TYPE_FLAG = (1 << 22);
//规则4:如果规则1有效,那么这个变量就用来从nSequence计算对应的锁定时间
static const uint32_t SEQUENCE_LOCKTIME_MASK = 0x0000ffff;
static const int SEQUENCE_LOCKTIME_GRANULARITY = 9;
};
//输出一共56字节
class CTxOut
{
public:
CAmount nValue;//输出金额 8
CScript scriptPubKey;//锁定脚本,提供了地址而生成的锁 32
int nRounds;//dash:和匿名发送相关 4
int64_t nUnlockedHeight;//safe:解锁高度 8
};
//交易一共96字节,空vector占28
class CTransactions
{
private:
const uint256 hash;
public:
static const int32_t CURRENT_VERSION=SAFE_TX_VERSION_2;
static const int32_t MAX_STANDARD_VERSION=SAFE_TX_VERSION_2;
const int32_t nVersion;// 版本
const std::vector<CTxIn> vin;// 交易输入集合
const std::vector<CTxOut> vout;// 交易输出集合
const uint32_t nLockTime;// 锁定高度
};
一笔交易的最大大小是有限制的,比如说100kb
static const unsigned int MAX_STANDARD_TX_SIZE = 100000;
2.分层确定性(HD)密钥创建和传输协议(BIP32),允许从父密钥的层次创建子密钥。使用 HD 协议的钱包称为 HD 钱包
3.在 HD 钱包中,该密钥用于生成子密钥。该密钥可能是私钥或公钥,且密钥的生成可能也需要链编码
4.硬分叉,软分叉,分叉
硬分叉:相当于一次大的升级,端口,魔数什么的都变了,未升级的节点不能共识确认新的区块
软分叉:相当于一次小的升级,可向后兼容,未升级的节点也可以确认新的区块
分叉:同时出了块,然后矿工各种基于这些块向后挖
发表评论
-
chaintips
2019-07-02 09:07 3051.invalid 该分支包含至少一块无效区块。 2.head ... -
比特币RPC
2019-02-13 08:10 401代码详解:https://mistydew.github.io ... -
比特币命令行参数
2019-02-03 09:04 429-?:提示常用的命令行参数并退出 -version:打印版本然 ... -
比特币消息类型
2019-01-27 09:28 6261.VERSION:当主动连接上对方时,发送version消息 ... -
外带数据
2019-01-07 08:08 399外带数据:保存在区块链但不进行货币交易的信息,比如需要永久保存 ... -
watch-only 地址
2019-01-06 16:34 468watch-only 地址:监控某一个地址,只能看不能花,相当 ... -
签名模式
2019-01-05 09:24 731交易的签名方式可以通过SIGHASH符号来控制,该符号附加在签 ... -
Script(脚本)字段
2018-12-28 07:57 4511.常见关键字段 OP_0/OP_FA ... -
coinbase交易
2018-12-26 22:14 524coinbase交易:用于凭空产生比特币 1.只有一个输入,该 ... -
根据地址查询私钥
2018-12-26 09:44 690字符串转私钥 1.先将字符串decode base58,获取C ... -
难度值
2018-12-26 07:45 496难度值:它决定了节点需要经过多少次哈希运算才能产生一个合法的区 ... -
即时支付
2018-12-23 16:52 662即时支付:直接发给主节点让主节点快速确认的交易 1.手续费最 ... -
椭圆曲线密码算法
2018-12-21 08:06 683椭圆曲线密码(Elliptic Curve Cryptogra ... -
Merkle树
2018-12-19 21:17 376Merkle哈希数是一类基于 ... -
SHA256
2018-12-19 21:07 528SHA256是构造区块链所用的主要密码哈希函数.无论是区块的头 ... -
比特币交易
2018-12-16 14:16 440交易类型 TX_NONSTANDARD 非标准的交易 TX_P ... -
Bloom过滤器
2018-12-16 09:47 337Bloom filter:是一种节省空间,高效率的数据表示和查 ... -
BerkeleyDB和LevelDB
2018-12-15 08:40 10Berkeley DB:作为比特币的钱包数据库(存储walle ... -
BerkeleyDB和LevelDB
2018-12-15 08:40 1959Berkeley DB:作为比特币的钱包数据库(存储walle ... -
P2P消息通信
2018-12-12 23:23 2941.启动的时间先与程序 ...
相关推荐
区块链系统:以比特币为基础,实现分布式交易,可持久化,支持私钥加密,公钥解密,签名算法,SHA256算法。
### 比特币:一种点对点电子货币系统 #### 概述 比特币是一种全新的电子货币系统,它采用点对点技术实现了无须通过中间金融机构即可直接进行交易的功能。与传统的电子支付方式不同,比特币的设计核心在于通过密码...
你需要下载所有必要的依赖,例如OpenSSL,它是比特币安全通信的基础。下载OpenSSL的源代码后,使用MSYS终端解压和编译OpenSSL。这个过程通常包括解压源代码,配置编译选项,然后编译和安装。 在编译比特币源代码...
本培训课程通过对区块链和比特币基础知识的介绍,帮助学习者深入了解这一新兴技术的核心概念及其发展历程。区块链作为一种革命性的技术,正在逐渐改变我们的生活和商业模式。通过学习这些基础知识,不仅可以为个人的...
以BTC-USD数据为例,基于GARCH模型,分析计算了比特币的VaR(风险价值 )与ES(期望损失)。同时也可以计算其他资产的VaR与ES,代码便于模仿,直接替 换即可。 即使没有R语言基础的也可以模仿,同时代码中有中文注释,...
比特币是自带安全属性的数字货币,密码学是其基础设施的一部分。 柯克霍夫原则是密码系统设计的基本原则,即密码系统应该就算被所有人知道系统的运作步骤,仍然是安全的。这意味着算法是公开的,唯一需要保护的是...
这个压缩包资源对于想要学习比特币基础知识、区块链技术,或者希望通过impress.js提升演示文稿质量的人来说,都是极其有价值的学习材料。通过观看和研究,不仅可以增进专业技能,还能获得对新兴技术的深入理解。
基于Paddle构建简单神经网络比特币价格预测python源码+详细注释(课程作业).zip基于Paddle构建简单神经网络比特币价格预测python源码+详细注释(课程作业).zip基于Paddle构建简单神经网络比特币价格预测python源码+...
比特币是最早的数字货币,以太坊提供智能合约功能,莱特币则在比特币基础上进行了优化。 2. **数字货币市场分析**: - **市场规模与增长**:数字货币市场规模在过去几年中显著扩大,预计未来将继续快速增长。市场...
### 专用集成电路比特币采矿硬件市场综合分析 #### 市场规模与增长预测 根据QYResearch发布的《全球专用集成电路比特币采矿硬件市场报告2023-2029》指出,预计到2029年全球专用集成电路(ASIC)比特币采矿硬件市场...
本期内容:基于requests爬取比特币信息并绘制价格走势图 实验环境 - anaconda丨pycharm - python3.11.4 - requests 安装requests库的命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests ...
2. **比特币基础知识**:试题中提及比特币的相关知识,包括比特币的获取方式(挖掘)、其去中心化的特点、不受政府控制的特性,以及对它前景的讨论。这可能是在考察学生的时事理解或逻辑分析能力。 3. **文言文阅读...
总的来说,比特币椭圆曲线密码学算法为整个比特币系统提供了一个坚固的安全基础。它利用了椭圆曲线数学的强大特性,确保了密钥的安全生成和管理,并为比特币的交易提供了一种难以破解的数字签名机制。随着量子计算的...
一个用于 Bitcoin 加密货币的核心集成和暂存树。作为 Bitcoin 协议的官方实现,这个项目提供了一个基础平台,供开发者参与 Bitcoin 网络的开发...它支持比特币的核心功能,并为整个加密货币生态系统的发展提供了基础。
java毕业设计基于SpringBoot+WebSocket+RSA的仿比特币点对点交易系统源码+使用文档+全部资料(优秀项目)java毕业设计基于SpringBoot+WebSocket+RSA的仿比特币点对点交易系统源码+使用文档+全部资料(优秀项目)java...
4. **Factom的应用案例**:Factom是一家利用现有比特币基础设施来提供数据验证服务的公司,其技术已被应用于真实性验证的实际场景中。 #### 技术背景与挑战 随着技术的飞速发展,特别是深度学习算法的进步,假脸...
比特币基于LSTM的多因子交易策略Python源码+文档说明 此策略会减少最大回撤,减少波动,比较稳健; 收益率与LSTM预测的准确率直接相关,应该加入更多因子,及设置更合适的超参 此模型同样的数据收益率存在随机性 ...
基于Paddle构建简单神经网络比特币价格预测python源码+详细注释(课程大作业) - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分...
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据...基于python的开源量化交易,量化投资架构源码+项目说明(股票,期权,期货,比特币,机器学习) .zip
由于其深远的影响,比特币白皮书也被视为区块链技术的诞生文件,而区块链正是构建比特币网络的基础技术。 在白皮书的结尾,中本聪还强调了这项技术的潜力,它不仅能用于货币,还可以扩展到其他需要可信中介机构的...