HON:如何用 Python 快速开发一个区块链数据结构?_以下哪个不是区块链区块的结构

作者|arjunaskykok

整理|Aholiab

出品|区块链大本营

根据IEEE此前的一项调查,Python已成为最受开发者欢迎的语言之一。由于其对于技术小白天然友好的特性,以及不断更新的新功能。Python越来越受到国内外开发者的喜爱。越来越多被用于独立、大型项目的开发开始使用Python。

20世纪90年代初荷兰人GuidovanRossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

之所以选中Python作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》。

苹果App Store上出现假冒Trezor的恶意应用程序Trezor Wallet Suite:6月20日消息,苹果App Store上出现一款假冒Trezor的恶意应用程序Trezor Wallet Suite,该应用已经上架了几周,可能已经窃取了数千人的资金。该恶意程序最初由The Crypto Lawyers的管理合伙人Rafael Yakobi发现。Trezor的实际iOS应用程序被称为“Trezor Suite Lite”,使用户能够跟踪他们的投资组合并交易资产。如果用户忘记了钱包应用的登录细节,钱包供应商会要求他们离线存储种子短语。种子短语是最后一道防线,用户只能用它从钱包应用程序中收回资金。

Trezor为用户提供了Shamir备份,以帮助他们生成多个种子短语,这些种子短语可以存储在不同的物理位置。下载应用程序后,用户可以选择一定数量的短语来解锁资金。例如,他们可以生成三个种子短语,但只需要两个就可以解锁他们的资金。而使用假冒的Trezor Wallet Suite泄露种子短语的用户可能创建了一个种子短语。生成多个种子短语需要用户创建新的钱包。多个种子短语可以确保即使假冒应用获取了一个短语,它也无法访问用户资金。

截至发稿时,这款假冒应用已成为英国区App Store搜索量第二高的应用。(BeInCrypto)[2023/6/20 21:49:55]

对于区块链开发者来说,Python也是十分实用的语言之一。今天,我们就Python开发一个简单的区块链数据结构。

FTX披露机构债权人完整名单,包括Apple、Netflix和Coinbase等公司:1月26日消息,加密货币交易所FTX的财务顾问在一份法庭文件中披露了该公司机构债权人的完整名单。这份长达一百多页的文件按字母顺序排列,包括Apple、WeWork等上市科技公司,以及众多数字资产公司,例如Coinbase、币安资本管理公司、Chainalysis、Yuga Labs、Doodles 和 Silvergate Bank。

此外,一些被提及的公司实例可能与 FTX 欠下的商品和服务款项有关。Pharmacy CVS 被列为该交易所的公司债权人之一,还有 Netflix 和 Comcast。

据悉,该名单不包括关于债权人矩阵中每家企业所欠金额的具体金额,也不包括涉及个人客户的特定信息,被列入名单的公司并不一定意味着该实体拥有 FTX 交易账户。(Decrypt)[2023/1/26 11:30:29]

在这篇文章中,一方面我们会对区块链数据结构的基本概念进行讲解,例如哈希的工作原理,另一方面,也会以实际代码来构建一个区块链基本的数据结构,让你对区块链和Python的基础有个基本的理解。

BNB Chain推出1000万美元Gas费激励计划支持Web3 DApp增长:10月26日,据官方消息,BNB Chain宣布推出1000万美元增长激励计划(Growth Incentive Program),以支持Web3 DApp的增长。

该计划最初的目标是在第四季度支持多达100个项目,每个项目每月可获得最高800 BNB的Gas费奖励。BNB Chain承诺每月为参与的相关团队提供共计100万美元,帮助其进一步获取用户并实现增长。[2022/10/26 16:38:43]

说不多说,下面就进入正题!

从哈希函数说起

在区块链中,数据结构是十分重要的基本组成部分,尤其是比特币。虽然单一的数据结构无法构建成加密数字货币,但理解数据结构对于理解区块链的基本原理是非常有益处的。

但在讲数字结构之前,我们还是先从哈希讲起,以比特币的SHA-256哈希函数为例,讲讲如何利用Python去实现哈希的运算。

哈希函数,又称散列算法,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。

动态 | 过去24小时EOS Dapp交易额约317万EOS:据DappReview数据,今日dapp新增9个,过去24小时EOS Dapp活跃用户137619,交易额317万EOS/1.18亿元;Tron Dapp活跃用户68892,交易额3.5亿TRX/6463万元;ETH Dapp活跃用户11407,交易额3.6万ETH/4103万元;Steem Dapp活跃用户12583,交易额36万Steem/111万元。[2019/4/15]

对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,称作消息摘要。

这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。

来看一个例子:

这句话,经过哈希函数SHA256后得到的哈希值为:

说回SHA-256,说白了,它就是一个哈希函数。那么我们如何用Python来实现呢?下面代码展示了用Python实现「helloworld」的过程:

看到这里你可能会问,SHA-256中的「256」究竟是什么意思?哈希算法是一个将任意文本转换为一个256位随机二进制字符串的过程。在上面的例子中,「helloworld」是一个11位的字符,经过哈希运算以后,变成了这样的一串字符:

星云链NAS启动激励计划,首日收到260个Dapp提交:激励计划实施首日,星云团队共收到了260多个DApp。同时在提交Dapp当天,测试网遭到恶意DDOS攻击,星云团队第一时间修复了测试网,现已正常运行。基于良好的开发体验,越来越多的开发者正在星云链上部署dapp。星云链(NAS)是致力于构建可持续升级的良性生态3.0公链。(已于3月29号主网上线)[2018/5/10]

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

同样,即使我的文本长度不是11位,生成的字符数也是一样的。例如:

在上面例子中,「Iamthebestpresident.Ever.」,哈希运算之后的字符串一样为64位。就算输入的文本是100位,哈希运算后的字符位数也是64位。

之所以这样,是因为字符是16进制的,如果我们把这样的字符串转换为2进制,那么就会得到一个256位的2进制字符串。如下图所示:

这就是SHA-256中,256这个数字的由来。

接下来我们就来看看哈希算法有哪些特征。哈希的特征之一就是「无冲突原则」。这个原则是指要得到一个256位的2进制字符串,显然有不止一个输入可以做到。

因为256位的输出长度是固定的,但输入的长度却没有限制,所以输入的范围要远大于输出,只要能够穷尽输入,就有可能得到2个一样的256位的输出。

话虽如此,不过要找到这样两个输入的难度却很大。即使是输入上改动了一点,输出的结果都会完全不同。如下图所示:

所以,想要找到2中一样的输出的唯一方法,是穷尽所有的字幕、数字组合,这几乎无法做到。几率为2的256次方。

这是个多大的数字?展开来就是酱婶儿的:

115792089237316195423570985008687907853269984665640564039457584007913129639936

几乎相当于10的77次方。这是个什么概念?在460亿光年的宇宙内,可见的原子数量也只有10的78次方。这个数字几乎相当于宇宙内的原子数量!

要运算这个数字需要多长时间?以英伟达Geforce1080Ti显卡,浮点运算11.3的算力来运算,每个哈希需要运算3000次,以每秒钟3766666666个哈希的速度来运算,找到两个相同的哈希运算结果,需要计算2的128次方个哈希。地球上所有的人一起计算,需要的时间如下:

这比地球存在的实时间都要长。

用Python创建第一个区块

了解了什么是哈希,我们接着就来说说什么是区块。实际上,区块链就是一个互相连接的序列。我们接下来创建第一个区块,也称为「创世区块」。代码如下所示:

区块链中会包含交易,交易很好理解,就是谁转了多少钱给谁。我们把区块进行序列,这样它就可以进行哈希运算:

这样,我们就得到了另一个区块,我们姑且称它为「区块2」:

再对区块2进行哈希运算:

得到了「区块3」。

再对区块3进行哈希运算,得到了「区块4」。

这样一来,想要确定区块上的数据没有被篡改,我只需要检查最后一个区块的哈希就行了。而不是从创世区块开始检查。这一原理也杜绝了区块链上数据被攒该的可能。

通过以上代码,可以得到下面结果:

这样,用Python实现简单的区块链开发的演示就结束了。Python是一门强大的语言,区块链是一个强大的信用工具,这两者结合,势必能创造出新的可能性。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

中币VEN:比特币现金全球接受度增长加速_PAY

比特币现金社区独立两年多以来,始终秉承着将比特币现金发展成为可以在全世界流通交易的货币为发展理念,理性务实的社区精神和自由开放的开发团队,助力比特币现金在全世界的普及.

[0:15ms0-3:789ms