交易就像复式记账法账户中的行。
简单来说,每一笔交易包含一个或多个输入,这笔交易的另一面,有一个或多个输出。
这些输入和输出的组合不需要相等,当输出略少于输入时,两者的差额就代表了一笔隐含的旷工费,这也是将交易放进账簿的矿工所收集到的一笔小额支付。
个人如何验证每一笔交易,是通过查询区块链吗?
钱包知道如何选取合适的输入和输出,以建立所希望的交易,你只需要指定目标地址和金额,其余的细节钱包应用会在后台自动完成。大多数钱包是用轻量级的客户端,只保存用户自己的未消费输出。
Alice的交易输出会包含一个脚本,这个脚本说,这个输出,谁能拿出一个签名和Bob的公开地址匹配上就支付给谁,因为只有Bob钱包的私钥可以匹配这个地址,所以只有包包的钱包可以提供这个签名,以兑换这笔支出。
比特币挖矿
交易被包在一起放进去一块处理时,需要极大的计算量来证明,但只需少量计算就能验证他们已被证明。
挖矿在比特币系统中起着两个作用:
1.挖矿在构建区块时会创造新的比特币。
2.挖矿创建信任。
为什么说挖矿创建信任?挖矿确保只有在包含交易的区块上,贡献了足够的计算量,这些交易才被确认,区块越多,花费的计算量越大,意味着更多的信任。
可以按照沉没成本来理解吗?薛兆丰老师讲过,可口可乐投入了一大笔广告费,把未来十年的利润都投入了,告诉人家,我就是要做好。
后来有一种解释,包含Alice的交易的区块后面形成的新区块使得信任度进一步增加,因为他们叠加了更多的计算在这个越来越长的链上。六次以上证明不可撤销,因为要撤销和重建六个区块需要巨量的计算。
挖矿类似于多人数独谜题游戏,困难度可以通过改变行列来调整。和数独游戏一样:非对称,解起来困难而验证容易,且困难度可调整。
这里提到了简单支付验证(SPV),需要结合higer之前的课程。
在新生大学听了一遍密码学,印象最深的是数字签名。图片我刻在脑子里,有个口诀,公钥加密,私钥解密。私钥签名,公钥解签名。看懂数字签名的时候,觉得真是精妙优雅的解决了问题。
但也有个问题,解决了确信是谁发给我的,但匿名性的问题呢,比特币应该是匿名的,如果为了安全,把地址经过CA认证(certificate authority),是不是你在认证的过程中也要实名制,那不就暴露身份了吗?
之前有位做信息安全的年轻人提到过盐,看我一脸懵懂,还特意解释说salt。今天才真正的算是见识了。服务器存储的都是用户的密码和salt的Hash值,当用户输入密码时,计算机会计算是否匹配。
虽然只是一点小知识,但让我很感慨,真是你所谓的顿悟,都是别人的基本功。另外,关注可以让你更快的进入这个领域,有时候感觉知识是被自己吸引来的。
例子中传输的是信息,价值是如何传输的呢?有待解答。