| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 从比特币到NFT -> 正文阅读 |
|
[区块链]从比特币到NFT |
技术视角,由浅入深 理解比特币中本聪于2008年发布《Bitcoin: A Peer-to-Peer Electronic Cash System》,从标题就可以看出,比特币是一套去中心化的电子货币系统。 先说所谓去中心化,是相对于当前网络世界“中心化”架构而言的。比如某人在工商银行储蓄1万元,存款记录保存在工商银行数据中心那些隆隆作响的服务器和存储设备中。如果设备全都发生故障,那么存款记录恐怕就无法证明了。工商银行的机房,就是“中心”。再比如我持有100股茅台,持股记录保存在证券登记结算公司这一“中心”,我在超市买了一张储值卡,储值卡余额保存在超市用的服务器这一“中心”。万一“中心”发生崩溃,所有围绕着这一中心的数据记录就丢掉了。幸运的是,目前为止,中心化架构运转基本稳定。 有些计算机技术先驱,喜欢探索另一方向——“去中心化”架构。他们试图把家里的PC或手机,装上一个软件(想象有一款比特币软件),每台计算机都(争取)贡献一些计算和存储能力,几百成千上万台这样的计算机相互连接,遵循同一套程序逻辑,但谁也管不着谁,就构成了一个“peer-to-peer”系统。一方面,这些peer可以既不属于国家,也不属于公司,可以由全球1000个网友的1000台个人计算机组成,因此没有国家、没有公司能控制这套系统;另一方面,在精心设计下,每个计算机(peer)可以关机、可以恶意修改自己存储的公共数据、可以故意向其他peer发布虚假信息,只要大多数计算机都正常运行,则整个系统所保存的数据的准确性就有保障,整个系统的功能也能如常运转。一套去中心化的系统大概就是这个样子。比特币系统吸引了成千上万台计算机为其工作,而发起者并没有为这些资源支出1分钱。不像某银行、某股票交易市场,需要花费数以亿计的资金来自建数据中心。当然,银行和股票交易市场有自己的营收,也必须为自建的数据中心的崩溃负责,而中本聪则无法控制比特币系统,任何个人、机构、国家都不能控制比特币系统,也无需为比特币系统负责。 那么,把很多peer组织成一个系统,要做什么事情呢?中本聪要做的,是Electronic Cash电子现金,电子现金在网络中产生、分发和交易。而这个系统的最重要的特征,就是去中心化(点对点)。至于为什么要创造这套东西,我们并没看到显著而明确的需求,也许仅仅是他喜欢,他能。 为了记录系统中的比特币的所有权和流通记录,中本聪创造了后来被称为“区块链”的存储机制,很快,“区块链”思想被从比特币系统中剥离出来,应用到其他地方,成为一种通用的去中心化的存储机制,也叫分布式账本。也可以说,比特币系统是建立在区块链上的。 小结: ü?能在网络上流通的电子货币Electronic Cash——是比特币系统的最终目标, ü?去中心化peer-to-peer是比特币系统的特征, ü?区块链是比特币系统中用来在各个peer中保存数据的解决方案 比特币系统的运行1.?某人发起交易,广播交易,交易包含(付款地址、收款地址、金额) 2.?收到广播的节点,先验证交易,然后将其近期收到的n个有效交易拼到一起,凑够一个区块可以存储的交易的数量,后面称为一个交易集 3.?上述节点,使用如下3个参数(上一区块的hash摘要,交易集、随机数),开始工作量证明,节点不断尝试随机数,使得使用3个参数计算出来的摘要值满足预设条件(以多个0开头) 4.?首先算出的节点,就获得记账资格,他保存新区块,并广播新区块 5.?收到新区块的节点,停止自己的计算,验证新区块,并保存新区块 6.?获得记账资格的节点,其账户获得比特币 区块链
每个收到新交易的节点,将约2000-4000个新交易凑成一个交易集,开始竞争一个耗费时间的运算:使用(前一个区块的hash,交易集,随机数nonce)作为输入变量,计算hash摘要。计算出的摘要如果前面有好几个0,视为成功胜出,停止计算;否则更换随机数nonce重新计算。每个节点都在反复尝试随机数,直到有一个节点终于撞了大运,这个节点立即广播其结果,收到广播的节点验证无误后,停止自己的计算,认可并保存这个节点打包的区块为区块链中下一个区块。区块链于是长高一个height。 这种“竞争”就叫挖矿,有两个特点,特点一是,在不设有调度节点的peer-to-peer环境中,区块链用节点计算时消耗的时间长短作为选择依据,而又巧妙地通过使用随机数,把各个节点的耗时均匀分布开,尽量避免了同时出现多个候选人。特点二是,每个新区块的摘要,都将前一个区块的摘要作为输入参数,如此追溯下去,每个区块的摘要都体现了之前所有区块的摘要,整条区块链就达到了防篡改的效果。 下图是比特币第720600个区块的一些信息: 理解以太坊比特币带来了区块链,区块链又带来了各式各样其他币。其中以太坊是最具代表性的,被称为区块链2.0。以太坊的白皮书名曰《A Next-Generation Smart Contract and Decentralized Application Platform》。 以太坊的区块链和比特币的区块链基本一样的。以太坊的厉害之处在于引入Smart Contract智能合约。智能合约是一段实现一定功能的程序,等着有人来调用它。智能则体现在强大的定制化上:一方面,人人都可以编写一段程序上传;另一方面,程序可以有较复杂的逻辑,比如需要两个账户的授权签名,才能执行某交易。 更重要的,通过智能合约,被交易的对象不限于以太币,而可以是任何东西。老王将自己的车牌号为京A888的大奔送给翠花,在老王的私钥签署下,让智能合约写入以太坊区块链记录下来即可。翠花拿着这条区块链记录,就能够证明自己被赠予的事实。 智能合约把以太坊变成了Application Platform,就像手机里的android操作系统,大家可以在以太坊上实现自己要记录下来的内容。 不过,在以太坊上链不是免费的。以太坊设置了gas费,需求方必须向诸如打包区块的参与节点支付gas费。因此,一个以太坊上的交易,包括交易本身A把某物给了B,也包括把一些以太币给挖矿等节点。部署智能合约也需要缴纳gas费。 NFT以太坊智能合约,使得人们可以在以太坊上记录任何东西。how abont在以太坊上发行另一套‘币’?当然可以,这种代币称为token(泛指区块链中记录和交易的对象)。成功的代币会有很多玩家,也会有很多开发者,开发者之间为了统一标准,制定了ERC?20标准协议,ERC?20规范了币或类似币的东西(比如超市积分、赌博筹码),不同开发者都能依据标准对同一种token进行开发了。其实,还有一种与币的属性不同的token,比如实物资产(汽车、合同文本)、数字资产(游戏装备、图片、音乐),不像币那样互相等价,这第二种token称为Non-Fungible Token,对应的标准为ERC?721。 终于来到NFT,区块链的杀手级应用,笔者正是因为看好NFT的前景,才去学到了上述区块链的知识。
从技术上讲,最完美的NFT,对应的资产要保存在去中心化的内容寻址的存储里。下面,我们就以FLOW+IPFS描述一下NFT:
首先,翠花将她原创的大奔头像jpg文件上传到IPFS,翠花获得了一串相应的摘要。翠花登录一个NFT网站,网站已经在底层构建好了FLOW链的接口。翠花通过网站界面输入摘要。网站向FLOW提交一个申请,在区块链中写入一条记录: owner: 翠花 tokenID: 31415926 metadata: ipfs://那个摘要 这样就“铸造”好了一个NFT。owner可以通过交易发生改变,而元数据metadata永远跟tokenID在一起。nft证明了owner对metadata的所有权。 理解NFTNFT能够代表实物资产,也能代表数字资产,事实上,实物资产已有汽车行驶证、房产证等等实物权证予以表示,不太需要我们操心。而数字资产的权属和交易,才是由NFT历史性地解决了的大问题。围绕着NFT有三个实体:所有者(所有者是实体的人,对应到数字世界,是一个账户)、NFT和资产(就是token代表的东西,以下仅讨论数字资产)。NFT就是一个字符串,这个字符串存储在区块链里,字符串一手抱着资产(永不放手),另一手拉着账户,可以松开手,换另一个账户拉手。 尽管其他人可以有大奔头像jpg的副本,甚至可以拿着副本文件上链铸造NFT,那都是道德或法律问题了,不在技术讨论之列。 twitter支持使用nft做头像,也就是说,用户可以显摆花费100万美元买的图片了。nft交易网站里每次交易,数字艺术品的原创作者都可以获得交易额的一定比例,合理激发了创作者的热情。继续幻想,元宇宙系统里面可以设定物品具有owner和价值,那么,nft就是这一设定的后台,数字物品也要买买买了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 19:45:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |