BTC比特币
BTC比特币
-
BTC交易exchange
BTC钱包Wallet
-
私钥Private Key
-
定义:一个随机生成数。一个比特币
地址中的所有资金控制权都对应于私
钥的所有权和控制权。私钥用于支付
比特币所必须的签名以证明资金的所
属权,私钥必须保持机密
私钥创建:生成密钥的第一步,就是
要找到足够安全的熵源,即随机性来
源,我们可以使用python中的random
函数生成我们的密钥,或者我们也可
以使用椭圆曲线密码学中的ECC函数
来生成我们的密钥
-
numpy:key = np.random.random()
Key = EEC_Encrypte()
-
公钥Public Key
-
定义:通过椭圆曲线乘法来得到我们需要的公钥,这ge过程是不可
逆转的,将私钥作为ECC函数的输入,从而得到公钥输出结果
椭圆曲线方程
-
ECC曲线图
BTC采用的EEC方程为secp256k1标准所定义
的一条特殊的曲线以及一系列的数学常数,该
标准由NIST设立:
y^2 mod p = (x^3+7) mod p
素数p:2^256-2^32-2^9-2^8-2^7-2^6-2^4-1
G点:称为生成点的常数点
加法运算:P1+P2=P3(P3为曲线上P1和P2两点 连线与椭圆曲线的交点)
乘法运算:k*P=P+P+...+P(k个P相加)
-
比特币地址Address
-
定义:比特币地址由数字和字母组成的字符串,由公
钥生成的比特币地址以数字1开头 :
eg:1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy
比特币地址可以由公钥通过单向哈希加密算法得到:
alg1:SHA256() alg2:RIPEMD160()
生成流程
-
BTC区块Block
-
定义:用来保存和记录交易的有效数据块,
除了交易相关的信息以外,区块中还包含
了当前的版本、区块创建的时间戳、区块
自身的Hash值、上一个区块的Hash
区块的数据结构:
class block:
def __init__(self):
self.data = {...}
self.edition = 1.0
self.time = 0
self.Hash = 0
self.PreHash = 0
区块相关API
-
工作量证明算法:def proof_of_work(header)
获取区块自生HashVal:def Self_Hash_Get(PreHash, time, data)
创建新的块:def New_block(transitions, PreBlockHash, block)
创世区块生成:def NewGenesisBlock(block)
-
BTC区块链Block Chain
-
定义:用来将创建的区块相互连接起来,
形成链条的形式,区块链中包含了每个
区块的所有内容,区块链将区块按照堆
栈的方式存储着
区块链数据结构:
class block_chain:
def __init__(self):
self.block = []
区块链相关API
-
添加区块到区块链:def AddBlockChain(block,chain)
创建区块链:def CreateBlockChain(chain)
获取区块链顶端块Hash:def GetLastBlockHash(chain)
-
-