立即掌握区块链第 2 部分 — 实施 PlatoBlockchain 数据智能。垂直搜索。人工智能。

立即掌握区块链第 2 部分 — 实施

普尔巴扬迪

在本系列文章中,我们将在不到 5 分钟的时间内基于 Golang 中的简单区块链实现构建一种简化的加密货币。 你必须先安装 golang 才能制作这个项目。 对于文本编辑器,你可以使用任何东西,这里我使用 Visual Studio Code。

立即掌握区块链第 2 部分 — 实施 PlatoBlockchain 数据智能。垂直搜索。人工智能。
来源:比特度

你安装了吗? 好吧,我们开始吧!

如果您已创建项目,请创建一个文件 m去吧。 ok 让我们开始编码,首先我们从 main.go 开始,让我们从“区块链”的 struct Block 部分开始。 在区块链中,它会阻止存储有价值的信息。 例如,比特币区块存储交易,这是任何加密货币的本质。 除此之外,区块还包含一些技术信息,例如版本、当前时间戳和前一个区块的哈希值。 在本文中,我们不会像区块链或比特币规范中描述的那样实现该块,而是使用它的简化版本,其中仅包含重要信息。 它看起来是这样的。 这里我们有一个结构块:

类型块结构{

Timestamp 是当前时间戳(创建块时), transactions 是块中包含的实际有价值的信息, prevhas 存储前一个块的哈希值,以及 Hash 是块的哈希值。 在比特币规范中 Timestamp, prevhashHash 是块头,它们形成单独的数据结构,交易(transaction 在我们的例子中)是一个单独的数据结构。 因此,为了简单起见,我们在这里将它们混合在一起。

那么我们如何计算哈希值呢? 哈希值的计算方式是区块链的一个非常重要的特性,正是这个特性使得区块链安全。 问题是,计算哈希值是一项计算困难的操作,即使在快速计算机上也需要一些时间(这就是人们购买强大的 GPU 来挖掘比特币的原因)。 这是一种有意的架构设计,这使得添加新块变得困难,从而防止添加后对其进行修改。 我们将在以后的文章中讨论并实现此机制。

现在,我们只需获取块字段,将它们连接起来,然后对连接的组合计算 SHA-256 哈希值。 让我们这样做 Newhash 方法:

func NewHash(time time.Time, transactions []string, prevhash []byte) []byte {

接下来,遵循 Golang 约定,我们将实现一个函数来简化块的创建并完成:

func Blocks(transactions []string, prevhash []byte) *Block {

我们继续创建打印功能。 打印功能对于打印执行交易的每个块的内容非常有用。 这是代码:

函数打印(块*块){

以及打印事务的函数事务:

func 交易(块*块) {

完成所有必需的功能后,我们将在主函数中使用它:

func main(){

好了,我们已经写完了所有的代码。 让我们通过在终端中输入 go run main.go 来运行它。 输出 :

结论

我们构建了一个非常简单的区块链原型:它只是一个块数组,每个块都与前一个块有连接。 但实际的区块链要复杂得多。 在我们的区块链中添加新块既简单又快速,但在实际的区块链中添加新块需要一些工作:在获得添加块的许可之前必须执行一些繁重的计算(这种机制称为工作量证明)。 此外,区块链是一个没有单一决策者的分布式数据库。 因此,一个新的区块必须得到网络其他参与者的确认和批准(这种机制称为共识)。 我们的区块链中还没有交易!

Source: https://medium.com/@purbaryandi/mastering-blockchain-in-no-time-part-2-implementation-433dc7967fe8?source=rss——cryptocurrency-5

时间戳记:

更多来自 M中号