加密技术和数字签名
比特币的交易是采用匿名账本的形式,就是交易的记录上没有个人相关的信息,只有交易双方的地址,交易的过程就是比特币从一个地址转移到另外一个地址。
就是谁有权操作地址?
比特币的解决方案就是谁拥有这个地址的私钥,谁就能操作这个地址。
地址是由私钥经过一些列运算,hash之后得到的,是无法从地址中反推出私钥的。具体的过程:
具体的过程就是首先比特币软件使用系统底层的随机所生成器产生32个字节随机数(256位),然后使用椭圆曲线签名算法计算出公钥,公钥再经过一系列的哈希和算法得到地址。所以公钥和地址是等价的。
如何证明你拥有这个地址的私钥?
解决方法是对交易信息进行签名,会先对交易信息进行Hash运算得到摘要信息,然后对摘要信息进行签名。
Hash(交易) -> Sign(XX)
如何验证和写入区块链?
完成准备后,付款节点就将交易的信息(带上签名)广播给相连接的节点,其他节点在收到这个信息后再转发,从而扩散到整个网络。
广播的信息是交易原始信息和签名信息。
接收的节点在转发的同时,会验证交易的是否可以写入区块链。
这里涉及很多的校验,其中一项就是交易的合法性的确认。采用公钥去解密签名信息,比对解密的信息是否和传过来的交易信息一致。
公钥是怎么来的???