主页 > imtoken安全下载地址 > 知道别人比特币私钥怎么转账 如果你想知道什么是 NFT,就看这篇文章

知道别人比特币私钥怎么转账 如果你想知道什么是 NFT,就看这篇文章

imtoken安全下载地址 2023-01-17 02:24:25

你听说过 NFT 吗?

在过去的一年里,我发现NFT这个词经常出现在我的各个内容平台的推荐中,在好奇的趋势下我想知道它是什么。 然后在了解了NFT的一些相关概念之后。 希望今天能用最简单易懂的方式和大家分享什么是NFT。

首先我们来看看近一年来关于NFT的新闻。

今年 3 月,街头艺术家 Banksy 的作品《Mornos(白痴)》以 9.5 万美元的价格被买走,随后买家将这幅画现场烧毁,并将其 NFT 版本上架交易平台。 最终《Mornos》的NFT版以4倍的价格成交,约合人民币247万元。

知道别人比特币私钥怎么转账_比特币 私钥 密码_比特币私钥公钥签名

同样在 3 月,数字视觉艺术家 Beeple 从 2007 年开始每天创作一件艺术品,然后他将 5,000 件作品拼接成一幅画,名为 Every Day: The First Five Thousand Days Everydays: The First 5000 Days,并将其 NFT 版本上佳士得拍卖。

3 月 11 日,一位名叫“MetaKovan”的买家以 6934.8 万美元的价格买下了这件 NFT 作品。

比特币私钥公钥签名_比特币 私钥 密码_知道别人比特币私钥怎么转账

不仅是图片,视频内容也可以做成NFT。 以下是NBA联盟推出的一款NFT卡牌收集游戏NBA TOP SHOT。 卡片内容是一些明星球员在球场上精彩瞬间的短片。 它作为盲盒卡包出售。

知道别人比特币私钥怎么转账_比特币 私钥 密码_比特币私钥公钥签名

看完以上几件事,我觉得NFT给我最直观的感受就是它很贵。

那么问题来了:为什么这么贵❓为什么这么贵还有人买❓你能用它做什么❓

什么是 NFT?

我们先来看看NFT这几个字母是什么意思? NFT的全称是Non-Fungible Token,中文意思是“非同质代币”

在经济学中,“同质可替代”是指一种物品,其一个单位等同于该物品的另一个单位。

什么意思,假设我在网上买手机,商家的仓库里会有很多手机,我其实不在乎他最后发给我的是哪一个。 作为买家,对我来说,这些手机都是一样的。

或者去超市买可乐,冰箱里随便挑一瓶可乐,对我来说没有区别。 我什至可以在退房前将其取出并放回原处,我可以选择任何我想要的东西。

这些东西对我来说是“同质的”。 手机和手机,可乐和可乐,没有区别。 以此类推,我们生活中最常见的同质事物之一就是“钱”。 我可以用你的100元换一件100元。 对我来说,它们之间没有区别。 我也可以请你兑换10张10元的钞票。 对我来说,这没有区别。

“非同质性”是指物品之间不能直接交换。 很容易想象艺术作品是非同质的。 基本上知道别人比特币私钥怎么转账,你在生活中永远不会看到有人用一首歌换取另一个人的画。 或者你不能为他们设置交换关系。

比特币私钥公钥签名_比特币 私钥 密码_知道别人比特币私钥怎么转账

上面我们讲了什么是“非同质”,那么“非同质代币”是什么意思呢? 最简单的解释:NFT是绝对唯一的数字证书,不可复制。 每个 NFT 都与 NFT 不同。

举个例子,假设A画了一张图,然后A把它拍下来做成NFT发给B同学,然后B同学右键复制一份,发给C同学。这次C同学说错了,你的不是原版的。 你是一个副本。 我要的是A发给你的照片。

NFT 赋予了这张照片的能力,让学生 C 可以检查它是否是复制品。

那么它是如何实现这种能力的呢? 不过别着急,我们先来了解一下什么是区块链。

什么是区块链和比特币?

简单来说知道别人比特币私钥怎么转账,区块链就是一种“建立信任机制”的技术。

在详细解释之前,让我们先回到远古时代,回到古猿刚刚变成人的那个时间点。 对于一个初出茅庐的人来说,突然变得非常重要的一件事是这个东西是我的。 因为这个概念关系到人类的生存。

“这是我的工具,那是你的工具”“这是我的食物,那是你的食物”“这是我的土地,那是你的土地”“这是我的孩子,那是你的孩子”

知道“谁的菜是谁的菜”很重要。 如果一个人吃了另一个人的食物,那么另一个人可能因此而死。 后来,随着时间的发展,“交易”的行为开始在人类中出现。 “我会用我的苹果换别人的土豆”。 交易使资源在人类之间流通。

知道别人比特币私钥怎么转账_比特币私钥公钥签名_比特币 私钥 密码

既然有交易行为,自然有人记录交易记录。 上图是公元前3200年美索不达米亚人写在泥版上的账本。 它绘制了交易物品的类型和数量,以及交易双方的身份。

有了账本之后,还有一件事变得很重要,那就是“信任”人们选择相信自己的交易行为会被正确记录,同时相信记录和保管账本的人不会去查账本. 操纵。 但是这种信任是非常不可靠的。 如果记账员非要我欠他十个苹果,我似乎没有办法证明我不欠他。

这是最原始的“中心化”交易机制。 回到现代,我们已经进化到通过银行、支付宝和各种金融机构进行交易。 这些交易平台可以说是非常安全的。 但是我们仍然使用和原始人一样的“中心化”交易机制。 如果这个“中间人”出了问题,我们的利益还是会受到损害。

那么有没有办法彻底根除这个隐患呢?

时间来到2008年,一个叫“中本聪”的人发表了一篇论文《比特币:一种点对点的电子现金系统》。 它提出了一种“去中心化”的电子簿记系统。 通过系统。 我们可以使用一种叫做“比特币”的数字货币,它依靠“区块链技术”进行“去中心化”交易,不需要任何“中间人”,非常安全。

那么它究竟是如何工作的呢?

我们把区块链想象成一个完整的没有中心的“账本系统”。 区块链网络中有无数个节点。 每个节点存储一组相同的账本。 每当一个节点与另一个节点进行交易时,它会将交易记录广播给网络中的其他节点。 其他节点收到这条交易记录后,会在本地记录下来,并持续向外界广播。 最终这条交易记录会同步到全网所有节点。

比特币私钥公钥签名_比特币 私钥 密码_知道别人比特币私钥怎么转账

这些交易记录会按照一定的时间和数量进行打包。 这个包被称为“块”。 之后,这个区块被记录在打包它的节点上,并与当前节点记录的前一个区块相连。 越过街区。 这些连接的块被称为“区块链”

知道别人比特币私钥怎么转账_比特币 私钥 密码_比特币私钥公钥签名

那么现在第一个问题来了,作为一个节点,为什么要把交易记录打包到其他节点上呢?

在中本聪设计的区块链系统中,节点在打包时会收到比特币作为激励。 在它的设计中,整个区块链系统每10分钟就会打包一个包裹。 前四年,节点每包一次可获得50个比特币; 未来四年内,该节点每收到一个包裹将获得25个比特币; 比特币将减半。

所以其实根据这个设置,可以算出有多少个比特币:

但是整个区块链这么多节点,每个节点都可以打包吗? 谁的套餐为准?

在中本聪的设计中,使用“工作量证明”机制来确定谁的包是有效的。 可以简单理解为一个节点在打包的时候,需要做一道难度大、难度大的数学题。 谁先解决谁就有效。 这个过程称为“挖矿”,尝试打包的节点称为“矿工”。

那么这道数学题到底是什么?

首先我们来看一下打包的包,也就是“块”到底是由什么组成的。 一个区块除了最重要的“交易信息”外,还会包含“前一个区块的Hash哈希值”和“当前区块内容的Hash哈希值”。

知道别人比特币私钥怎么转账_比特币私钥公钥签名_比特币 私钥 密码

区块链系统将使用打包后的信息和一个“随机数”作为输入,进行两次sha256哈希运算。

系统会要求计算结果的前n位全为0,才算正确。 节点只能通过调整随机数来获得不同的输出结果。 并且系统可以通过调整n的大小来调整计算难度。

知道别人比特币私钥怎么转账_比特币私钥公钥签名_比特币 私钥 密码

虽然随机数的选择有一定的运气成分,但平均而言,节点的算力越强,能够成功打包的概率就越大。 也意味着这个节点付出了更多的工作量。 它配得上这个奖项。

同时,收到新打包区块的其他节点可以通过验证区块的哈希值是否满足条件来判断该区块是否有效。

比特币 私钥 密码_比特币私钥公钥签名_知道别人比特币私钥怎么转账

下面说说如何保证节点间的交易记录是真实的?

区块链系统使用“电子签名”来保证交易的可靠性。 对于区块链用户,在创建账户时。 系统会生成一个随机数,使用非对称加密算法生成一对密钥,其“公钥”作为账户地址,也就是常说的区块链钱包地址。 这个地址是公开的。 同时会生成一个“私钥”,需要用户自行保管,不能被他人知晓。

私钥用于对记录进行签名,公钥用于取消对记录的签名。

如果A同学想转10个比特币给B同学,系统会先计算一个hash值进行转账操作,然后用私钥签名。 同时将转账操作和加签名得到的签名广播给网络中的其他节点,还有学生A自己的公钥。 其他节点拿到后,会用A同学的公钥解签名,然后和代表转账操作的哈希值进行比较,看是否一致。 如果它们一致,则认为有效。

现在让我们想象这样一种情况,假设几乎同时,有两个节点完成了工作量证明,各自打包并广播出去。 那么就会出现一些节点分别收到不同的块。 这时候,区块链已经“分叉”了

不过没关系,中本聪为区块链设计了“最长链原则”。 这些收到不同区块的节点会继续打包,就好像什么都没发生过一样。 直到有一个分支先打印一个包,那么这个分支就会变得比其他分支长。 那么当其他节点发现有另一条较长的链时,就会放弃自己的短链,重新加入较长的链。

比特币 私钥 密码_比特币私钥公钥签名_知道别人比特币私钥怎么转账

因为区块链采用最长链原则,这顺便防止了“恶意篡改”。 假设现在有人要修改某个区块上的数据,因为下一个区块是基于前一个区块的哈希值。 ,这个人基本上没有办法把后面的所有方块都改掉。 所以这个人只能在修改后的区块上创建一个新的分支,而这个分支肯定比其他链要短,所以根据最长链原则,这个分支会被丢弃。 那么如果想要篡改的人只是找到最长链的位置然后篡改,那岂不是意味着后续环节的数据有问题,无法更改?

如果矿工A有足够的算力,当矿工B在出块1时,矿工A已经出块1,同时继续快速出块被篡改的块2,那么矿工A将块1和2全部出块一次被永久广播到网络,然后矿工 B 产生的区块将作为短链被丢弃,被篡改的区块将被 B 接受。

但实际上,这种攻击并不可怕。 我们假设整个区块链网络中有无数个节点。 他们都在同时生产区块。 矿工A可能在某一时刻生成全网最长的链,其恶意区块也可能被部分节点接受。 但其恶意区块不会即时同步到所有网络节点。 因此,除非矿工 A 能够比其他节点更快地生成新节点,否则其恶意篡改将很快被其他节点生成的更长链所取代。

一个默认的假设是,如果矿工A的算力比全网所有节点都快,那么他真的有动机进行恶意篡改吗? 它的收益与其成本完全不成比例。

什么是以太坊?

上面我们简单介绍了什么是区块链和比特币。 别着急,为了更好的理解NFT,我们还需要知道以太坊是什么。

比特币私钥公钥签名_比特币 私钥 密码_知道别人比特币私钥怎么转账

2013年,19岁的加拿大-俄罗斯少年VITALIK BUTERIN创造了“以太坊Ethereum”

比特币 私钥 密码_知道别人比特币私钥怎么转账_比特币私钥公钥签名

与比特币相比,以太坊属于区块链2.0的范畴。 通过上面对区块链和比特币的解释,你会发现中本聪设计的比特币只适用于加密货币交易。 但以太坊除了具备上述区块链的基本功能外,还具有可编程性。

比特币私钥公钥签名_知道别人比特币私钥怎么转账_比特币 私钥 密码

以太坊提供了一个名为 EVM 的“智能合约虚拟机”。 加入虚拟机 EVM 后,以太坊成为一个可编程的去中心化平台。 开发者可以通过 EVM 提供的编程 API 编写一个叫做“智能合约”的东西。 智能合约是指区块链上的一组可执行指令。 这些指令集可以通过EVM的解释和执行来读写区块链的状态。 开发人员可以使用它来实现一些业务逻辑。

同时,为了更好的帮助开发者,以太坊提供了一种叫做Solidity的编程语言。 开发者使用Solidity语言编写业务逻辑,通过编译器,将代码编译成EVM虚拟机可以理解的智能合约代码。 之后,可以将智能合约部署到区块链上。 部署成功后会得到一个以太坊地址,该地址表示合约代码存放的位置。 此时其他节点可以通过访问该地址来调用对外开放的接口和功能。

比特币 私钥 密码_比特币私钥公钥签名_知道别人比特币私钥怎么转账

代币和 ERC-721 智能合约

通过上面对区块链和以太坊的介绍。 我们可以想象,通过以太坊的可编程性,我们可以创造一种方法来生成一个不可篡改且永远唯一的ID。 许多其他功能可以添加到此 ID。

这里我们称这种ID为“token令牌”。 我们通过编写的智能合约来定义这个代币的能力。

可以作为类似于比特币的数字货币,身份信息,当然也可以作为“NFT”。 NFT 是由一组智能合约定义的非同质代币。 数字内容转化为NFT后,成为不可复制、完全唯一、不可篡改的token。

最著名的 NFT 智能合约是“ERC-721”。 下面是这个合约的接口定义。 我们可以看到这个接口包括:创建、查询、授权、转账、销毁等一系列NFT相关的能力。

pragma solidity ^0.4.20;

interface ERC721 {
    /// @dev 当任何NFT的所有权更改时(不管哪种方式),就会触发此事件。
    ///  包括在创建时(`from` == 0)和销毁时(`to` == 0), 合约创建时除外。
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);

    /// @dev 当更改或确认NFT的授权地址时触发。
    ///  零地址表示没有授权的地址。
    ///  发生 `Transfer` 事件时,同样表示该NFT的授权地址(如果有)被重置为“无”(零地址)。
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);

    /// @dev 所有者启用或禁用操作员时触发。(操作员可管理所有者所持有的NFTs)
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    /// @notice 统计所持有的NFTs数量
    /// @dev NFT 不能分配给零地址,查询零地址同样会异常
    /// @param _owner : 待查地址
    /// @return 返回数量,也许是0
    function balanceOf(address _ownerexternal view returns (uint256);

    /// @notice 返回所有者
    /// @dev NFT 不能分配给零地址,查询零地址抛出异常
    /// @param _tokenId NFT 的id
    /// @return 返回所有者地址
    function ownerOf(uint256 _tokenIdexternal view returns (address);

    /// @notice 将NFT的所有权从一个地址转移到另一个地址
    /// @dev 如果`msg.sender` 不是当前的所有者(或授权者)抛出异常
    /// 如果 `_from` 不是所有者、`_to` 是零地址、`_tokenId` 不是有效id 均抛出异常。
    ///  当转移完成时,函数检查  `_to` 是否是合约,如果是,调用 `_to`的 `onERC721Received` 并且检查返回值是否是 `0x150b7a02` (即:`bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`)  如果不是抛出异常。
    /// @param _from :当前的所有者
    /// @param _to :新的所有者
    /// @param _tokenId :要转移的token id.
    /// @param data : 附加额外的参数(没有指定格式),传递给接收者。
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes dataexternal payable;

    /// @notice 将NFT的所有权从一个地址转移到另一个地址,功能同上,不带data参数。
    function safeTransferFrom(address _from, address _to, uint256 _tokenIdexternal payable;

    /// @notice 转移所有权 -- 调用者负责确认`_to`是否有能力接收NFTs,否则可能永久丢失。
    /// @dev 如果`msg.sender` 不是当前的所有者(或授权者、操作员)抛出异常
    /// 如果 `_from` 不是所有者、`_to` 是零地址、`_tokenId` 不是有效id 均抛出异常。
    function transferFrom(address _from, address _to, uint256 _tokenIdexternal payable;

    /// @notice 更改或确认NFT的授权地址
    /// @dev 零地址表示没有授权的地址。
    ///  如果`msg.sender` 不是当前的所有者或操作员
    /// @param _approved 新授权的控制者
    /// @param _tokenId : token id
    function approve(address _approved, uint256 _tokenIdexternal payable;

    /// @notice 启用或禁用第三方(操作员)管理 `msg.sender` 所有资产
    /// @dev 触发 ApprovalForAll 事件,合约必须允许每个所有者可以有多个操作员。
    /// @param _operator 要添加到授权操作员列表中的地址
    /// @param _approved True 表示授权, false 表示撤销
    function setApprovalForAll(address _operator, bool _approvedexternal;

    /// @notice 获取单个NFT的授权地址
    /// @dev 如果 `_tokenId` 无效,抛出异常。
    /// @param _tokenId :  token id
    /// @return 返回授权地址, 零地址表示没有。
    function getApproved(uint256 _tokenIdexternal view returns (address);

    /// @notice 查询一个地址是否是另一个地址的授权操作员
    /// @param _owner 所有者
    /// @param _operator 代表所有者的授权操作员
    function isApprovedForAll(address _owner, address _operatorexternal view returns (bool);
}

NFT能做什么?

现在,我想你应该对什么是 NFT 有了一个大概的了解。 那它有什么用呢? 这么贵,可以用来做投资理财产品吗? 其实我觉得贵不贵是一个更大更复杂的经济问题。 我们不打算在这里讨论它。

下面我们就来看看它更多的生活层面的应用。

在真实生活中。 我可以用NFT加密版权信息、知识产权、身份信息、软件源代码、合同等等。 NFT 可以赋予这些现实生活中的事物独特性和不可篡改的能力。

在虚拟世界里呢? 最近,“Metaverse”这个词变得非常流行,甚至 Facebook 也将其公司名称更改为 Meta。 就在本月,Facebook 宣布了一款正在开发的触觉手套。

比特币私钥公钥签名_知道别人比特币私钥怎么转账_比特币 私钥 密码

比特币私钥公钥签名_知道别人比特币私钥怎么转账_比特币 私钥 密码

事实上,在当今时代,现实与虚拟的界限已经越来越模糊。 我们就像来自远古时代的新人类。 我们需要一些东西,可以帮助我们在虚拟世界中实现“这东西是我的”的概念。 事实上,NFT 帮助我们实现了虚拟物品的所有权。 例如:网络游戏中的道具; 书面代码、文件; 录制的视频/音频内容; 数字艺术作品; 电子书; 以及一系列直接依托互联网的内容。

我看到一个比喻,觉得很贴切。 NFT 就像印刷机。 印刷机的发明让我们可以将现实世界中难以复制的文字复制出来。 而 NFT 帮助我在虚拟世界中让容易复制的东西变得可靠。

有人说“网络上的一切都是虚拟的,你无法掌握”

比特币 私钥 密码_比特币私钥公钥签名_知道别人比特币私钥怎么转账

但其实有了NFT,你就可以掌握

参考