主页 > 最新imtoken官方下载 > 从区块链到 NFT 再到元界

从区块链到 NFT 再到元界

最新imtoken官方下载 2023-02-10 06:17:04

根据比特币白皮书,区块链的本质是一个P2P(点对点)分布式账本。 当一个节点发送交易时,它需要广播给周围的节点。 数据)将接收到的交易信息写入区块体,并获得记账权限(即对某些交易数据进行认证,授权将区块写入区块链),将新区块广播给周围的节点,其他节点验证其合法性数据和记账权限,然后根据区块数据同步本地状态,从而实现整个区块网络的状态一致,并且因为新的区块头有前一个区块的关联信息,所以区块是连接起来形成区块链。

简单来说,网络中的所有节点都执行完全相同的操作,以在本地维护一个状态一致的分布式系统。

以太坊区块体中包括_以太坊每分钟出多少区块_以太坊区块链链易查询

区块头:负责基本功能,一般包括以下部分

以太坊区块体中包括_以太坊每分钟出多少区块_以太坊区块链链易查询

比特币状态

比特币节点在本地维护一个名为UTXO(Unspent Transaction Output)的账本,即未使用的交易输出,可以简单理解为后续转账未使用的转账输入。

运行机制

每笔新交易都以哈希树结构存储在比特币区块的区块体中。

单个事务的一个协议消息的示例如下:

In: 
// 表示这次交易使用的资金的来源
    Previous tx: f5d8...430901c91
    // 资金来源所在交易的哈希
    Index: 0
    // 资金来源交易哈希中的哪个转出
    scriptSig: 3045...798a4 618c...41501
    // 对声明的资金来源的解锁脚本,含有签名和公钥
    // 可以简单理解为银行卡号和密码
Out: // 表明这次交易的输出
    Value: 5000000000
    // 金额
    scriptPubKey: OP_DUP OP_HASH160 4043...549d OP_EQUALVERIFY OP_CHECKSIG
    // 锁定脚本,含有对公钥的哈希和一些运算符,使用这笔转出的交易需要在它的 scriptSig 提供可以通过脚本的信息才能解锁

以太坊区块体中包括_以太坊区块链链易查询_以太坊每分钟出多少区块

// 可以理解为银行卡号的哈希和一些操作指令

公钥和私钥还具有密码学特性:用一个密钥加密的数据必须且只能用另一个密钥解密

交易信息:每笔交易都是根据之前的交易记录,需要满足输入等于输出(其实是有区别的,差额会作为节点的工作费)

输出:

特征:

交易信息入链:

有效性:如果一个账户同时发送多个相互矛盾的交易信息

接收信息的节点:

确认:如何确认UTXO的所有权

交易信息防伪:

接收节点:执行OP_CHECKSIG的过程

一致性:网络传输问题,每个节点收到的交易信息可能不同,所以他们验证并写入区块的交易可能不同,如果全部上传到链上,最终生成的区块信息会不一致

分叉:巧合的是,同时产生了两个区块,这两个区块都会被纳入链中,形成临时分叉。 后续计算采用最长链原则,丢弃附加块数量少的分叉。 交易确认:正面 由于分叉和废块的存在,交易一般需要不断添加多个区块才能被确认。 比特币一般需要经过6个区块才算相对安全的篡改:需要超高的算法。 篡改者的算力需要超过全网的算力才能实现篡改,使他的篡改分叉成为最长链,利用SHA-256哈希算法和非对称加密创建数字签名完成篡改汇总。 防伪 在交易信息中执行脚本验证 验证签名 使用区块链区块存储比特币交易信息,使用哈希树存储和防止交易数据篡改 使用额外的工作规则实现网络一致性(算力)来奖励网络和交易费用支付给矿工节点以太坊

以太坊黄皮书

以太坊也是一个交易驱动的状态机,支持智能合约、可编程区块链和去中心化应用程序平台。

我们看到,比特币具有一定的脚本执行能力,但是其脚本比较简单,只支持几种固定的交易协议和脚本命令。 以太坊不同。 图灵完备以太坊区块体中包括,区块链开发者可以在支持范围内自由编程。

结构区块头 ommersHash

由于以太坊的出块速度较快,临时分叉的可能性较高。 OmmersHash 是为抑制分叉而设计的。 二)废块也可以获得区块奖励,一级是7/8,二级是6/8,在有效块中写一个废块也会有1/32的奖励。

以太坊区块体中包括_以太坊区块链链易查询_以太坊每分钟出多少区块

布隆过滤器

布隆过滤器是一种效率更高但准确性较低的搜索算法。 一般机制如下:

提供一批散列函数将输入映射到数组的几个点。 查询时检查数组对应的点是否有值。

如:

以太坊区块体中包括_以太坊区块链链易查询_以太坊每分钟出多少区块

查看:

可见Bloom filter判断存在会误报,不存在则不会误报,适合过滤大量数据。

块体

与比特币不同的是,以太坊的区块体中存在三棵树:状态树、交易树和收据树。 树的数据将由全节点维护在本地数据库中。

新的区块只会实际存储发生变化的账户的新状态,没有发生变化的会指向上一个区块状态树对应的位置

交易树:驱动状态树变化,也是MPT,只保存区块中发生的交易信息

收据树:也是MPT

共识机制

目前以太坊也采用PoW(Proof of Work),即挖矿来确定记账权。

从一个seed生成一个小数据集(MB级别),然后从小数据集生成一个大数据集(GB级别大小),使用block header和一个nonce值计算hash,映射到大数据集,读取大数据集中的目标位置和相邻元素,然后哈希,循环64次,计算哈希和挖矿目标值的比较。 如果失败,则替换区块头中的nonce并重新计算。

同时,以太坊也有转换 PoS 机制的计划。 以太坊的难度调整机制存在难度因素。 这个难度系数每 100,000 个区块就会翻倍。 它是一个指数因子,所以也叫难度。 炸弹,因为PoS机制上线不顺利,难度炸弹导致出块速度提升过快,所以以太坊修改了代码,难度系数减去300万个区块计算,这也是由于代码升级。 它是 Fang 网络的一个硬分叉。 幸运的是,分叉网络的所有节点都进行了代码升级。

智能合约

前面说过,以太坊网络中有一个合约账户,账户内存中有一段代码,所以智能合约就是按照既定逻辑执行的代码。

转移

外部账户调用合约账户,外部账户发起的合约账户调用也可以调用另一个合约账户。

外部账户调用时,在data字段写入目标函数和参数,向合约账户发起交易。

合约调用合约的一种方式:

contract A {
    event LogCallFoo (string str);
    function foo (string str) returns (uint) {
        emit LogCallFoo(str);
        return 123;
    }

以太坊区块链链易查询_以太坊每分钟出多少区块_以太坊区块体中包括

} contract B { uint ua; // callAFooDirectly 的执行返回值 function callAFooDirectly (address addr) public { A a = A(addr); ua = a.foo("call foo directly); // 调用 a 地址的 foo 方法 } }

创建并运行每个交易执行后,形成一个收据,其中包含执行结果等信息的示例

这是一个用于拍卖的智能合约:

contract SimpleAuctionV1 {
    address public beneficiary; // 受益人
    uint public auctionEnd; // 结束时间
    address public highestBidder; // 当前最高出价地址
    mapping(address => unit) bids; // 所有出价
    address[] bidders; // 所有出价地址
    bool ended; // 是否结束
    event HighestBidIncreased(address bidder, uint amount);
    event AuctionEnded(address winner, unit amount);
    constructor(uint _biddingTime, address _beneficiary) public {

以太坊每分钟出多少区块_以太坊区块链链易查询_以太坊区块体中包括

beneficiary = _beneficiary; auctionEnd = now + _biddingTime } } // 参与拍卖的地址向此合约地址发起交易并支付货币 function bid() public payable { require(now <= auctionEnd); require(bids[msg.sender]+msg.value > bids[highestBidder]); // 没出过价则把出价人存起来 if (!(bids[msg.sender] == unit(0))) { bidders.push(msg.sender); } // 如果出价最高则修改当前最高出价人 highestBidder = msg.sender; bids[msg.sender] += msg.value; emit HighestBidIncreased(msg.sender, bins[msg.sender]); } // 拍卖结束 function auctionEnd()public { require(now > auctionEnd); require(!ended); // 把最高出价转给受益人

以太坊区块链链易查询_以太坊区块体中包括_以太坊每分钟出多少区块

beneficiary.transfer(bids[highestBidder]); // 给没竞拍成功的人退钱 for (uint i = 0; i< bidders.length; i++) { address bidder = bidders[i]; if (bidder == highestBidder) continue; bidder.transfer(bids[bidder]); } ended = true; emit AuctionEnded(highestBidder, bids[highestBidder]); }

代码就是法律。

智能合约的逻辑由代码决定。 已发布的合约代码不可修改。 如果有新的代码发布,会生成另一个合约账户地址,所以即使有bug也是无法修改的。

The DAO (Decentralized Autonomous Organization):利用重入攻击,黑客在其合约账户的收款功能中编写了对The DAO的调用以太坊区块体中包括,使用循环调用以太坊转账5000万/1.5亿美元,约10%以太坊系统中的以太币总量,为了弥补对以太坊稳定性的重大影响,在软分叉修复失败后,以太坊承诺投票,以太坊选择了硬分叉。 The DAO 中以太坊的强行转移导致社区分裂,导致以太坊硬分叉为 ETH 和 ETC。

非同质化代币

从智能合约的例子也可以看出,智能合约的开发者可以在合约账户内部维护一棵状态树。

其中一种应用方式是基于智能合约在区块链网络中发行代币,并在合约账户中维护所有持有者的状态。

NFT就是这样一种应用,被称为非同质代币。 NFT的一大特点是基于区块链的特性,通过地址对数字作品的所有权是公开的、不可篡改的。

一个ERC721标准(在以太坊上发行NFT的标准)区块链中的NFT数据示例:

由于https的内容会被修改,因此tokenURI一般会被IPFS(分布式文件存储系统)替代。 这个例子说明一个地址拥有一个编号为6的item,它的内容就是tokenURI的内容。

从大多数NFT的实现来看,区块链上只记录了作品所有者的地址、作品的编号、作品的链接,而作品本身是在链下的。 所以也出现了现实中艺术家的作品被别人拿走,铸成NFT出售的情况,所以NFT解决不了线下的问题。 从理论上讲,NFT 会提供数字资产的流通,但不能赋予物品本身价值。

通过调用智能合约的函数,可以进行NFT的转账和交易。 所以你可以知道,NFT并不是指代某种代币,而是一种代币。 您也可以通过创建自己的智能合约来发行自己的 NFT 或 NFT 平台。

元界

区块链应该是一种在元宇宙中实现的技术,作为数字世界中可任意复制的数字资产确权的基础,例如Decentraland现有的虚拟土地和创作物的买卖。

同时,对于诞生于数字世界的虚拟物品,由于无需解决线下问题,NFT的适用性应该更高。

其他摘要参考