参考链接
https://bitcoin.org/en/developer-reference
1.账户/地址
采用非对称的加密算法
用户保留私钥,对发出的交易进行签名确认,并公开公钥。
比特币的账户地址是用户公钥经过一系列Hash(HASH160,或先进行SHA256,然后进行RIPEMD160)及编码运算后生成的160位(20字节)的字符串。一般地,对账户地址串进行Base58Check编码,并添加前导字节(表明支持哪种脚本)和4字节校验字节。

私钥,公钥,钱包地址间的关系

2.交易
一条交易包括如下信息:
·付款人地址:
合法的地址,公钥经过SHA256和RIPEMD160两次Hash,得到160位Hash串;
·付款人对交易的签名:
·付款人资金的来源交易ID:
哪个交易的输出作为本次交易的输入;
·交易金额:
·收款人地址:
·收款人公钥:
网络中节点收到交易信息后,将进行如下检查:
·交易是否已经处理过
·交易是否合法
包括地址是否合法、发起交易者是否是输入地址的合法拥有者、是否是UTXO;
·交易的输入之和是否大于输出之和。
如果检查通过,则将交易标记为合法的未确认交易,并在网络内进行广播。
3.交易脚本(script)
每个交易都会包括两个脚本:输出脚本(scriptPubKey)和认领脚本(scriptSig)。
输出脚本由付款方对交易设置锁定,用来对改笔交易输出的对象(收款方)进行权限控制,例如限制必须是某个公钥的拥有者才能花费这笔交易。
认领脚本则用来证明自己可以满足交易输出脚本的锁定条件,即对某个交易的输出(比特币)的拥有权。
4.区块结构
区块整体结构
一个完整的区块结构主要由以下几部分构成:

比特币的区块大小目前被严格限制在1MB以内。4字节的区块大小字段不包含在此内。
区块头结构

交易整体结构
一个区块第一个交易规定为coinbase交易。
Coinbase交易结构:

普通交易结构

普通交易输入结构

普通交易输出结构

挖矿方程

version = 版本号
prev_hash = 前一区块ID的字节反转
merkle_root = 本区块中所有交易的SHA256的墨克哈希树根的字节反转
ntime = 时间戳
nbits = 网络难度
网友评论