duanlove技术路途 2018-05-17
对很多人来说,弄懂区块链是非常困难的,作者也不例外。即便一开始就通过视频和文章来学习相关知识,也只是做到了“初入门户”直到写了自己的区块链,才真正理解了它是什么以及它的潜在作用。
作者认为区块链是一个公开的加密数据库。比如说,你是亚马逊的股东,你想利用区块链来跟踪你股票的涨停,这时候你要考虑区块链在这里会发挥怎样的作用?也许你不用猜,因为你的客户不愿意花他们的钱只为验证你对区块链的认识。
让我们对未来应用程序的发展趋势做个假设。不过首先,我们要设置7个互不干扰的功能。
区块链的核心是散列函数。如果没有加密,区块链将很容易被“入侵”。
“状态”是需求记录。例如,作者有10个硬币,他给1个到Medium,然后“状态”会在词库的规则中衡量其价值。
透支是不存在的。也就是说如果你只有10枚硬币,就不能给别人11枚硬币。下图的函数会验证我们的操作是否确实有效。此外,它还讲求守恒。例如,你不能给人5枚硬币,然而他却只收到4枚硬币,这样做会超出运算规则。
有了以上的铺垫,了解区块链就方便了很多。读取来自前一个块的信息,并将其链接到新块,这是区块链概念的核心。在这个过程,区块链容易遭到虚假信息的“入侵”。但也不用过于担心,因为这要求必须对先前的区块链进行解密。这(几乎)是不可能的。
下面是一个帮助函数,用于检查前一个块的散列:
我们已经把所有的东西都组装在一起,现在该建立我们的区块链了。我们现在更新区块链。
不过在这之前,我们必须对区块链进行验证:
最后,我们需要一个能把上述所有内容连接在在一起的函数:
现在我们有了7项功能。我们该如何与之互动?首先我们需要用一个创世区块来作为我们新的“币”(或库存等)的开始。在本文,作者从10枚币开始。
现在,看看当作者把“币”给Medium时会发生什么:
再让我们看一下把币给了Medium发生了什么
状态更新后显示什么:
区块链是这样的:
第一个新事务已经创建并插入到堆栈的顶部。现在,作者希望他已经激起了你的好奇心,并有兴趣复制代码继续深入了解。在作者看来,这是学习一种新技术的最好的方法。