当前位置:首页 » 比特币问答 » 比特币中transaction

比特币中transaction

发布时间: 2023-02-19 01:23:21

㈠ 超详细整理区块链和加密货币行业术语(建议收藏)

比特币词汇表:你需要知道的每一个区块链和加密货币短语

尽管困难重重,区块链技术已成为主流。比特币已成为家喻户晓的词,世界各地的金融机构都投资于加密货币或允许其客户这样做。与此同时,NFT 吸引了各路名人的加入和赞赏。

但尽管如此,区块链技术仍然非常神秘。只有才华横溢的工程师才能真正理解这些——其中许多人是比特币和以太币等加密货币的早期采用者,而对于外行来说可能仍是很困难的。

以下是您可能会觉得有用的区块链术语的词汇表。(所有短语按英文字母顺序排列)

空投(Airdrop)

空投是指公司将加密货币或 NFT 直接放入您的钱包中。 区块链 服务将推出代 并空投给曾使用过该服务的用户,而不是首次公开募股。这样做有几个原因:它可以是纯粹的营销,因为空投提高了人们可以投资的代币的意识,或者可以为 DAO 提供治理代币。

最近的一个例子:以太坊名称服务允许用户将他们的钱包号码更改为钱包名称(如 CNET.eth)。去年 12 月,它推出了自己的 ENS 代币,向所有使用该服务的人空投了一定金额。使用以太坊名称服务的人越多,他们被空投的代币就越多——在某些情况下价值数万美元。

山寨币(Altcoin)

任何不是 比特币 以太币的加密货币都被称为山寨币(Altcoin) 。有时候也被称为“ shitcoins。

币安(Binance)

世界上最大的 加密货币 交易所,人们在这里购买和交易加密货币。它正在接受美国司法部和美国国税局的逃税和洗钱调查。

区块链(Blockchain)

区块链是“分布式数据库”。简单来说,它是一个去中心化的账本,将信息记录在数字“块”中。一旦一个块被挖掘并添加到链中,它就不能被更改,因此区块链提供了不可更改数据的公共记录。

有许多不同的区块链具有不同程度的去中心化、效率和安全性。许多人拥有自己的加密货币——例如,以太币是一种建立在 以太坊区块 链上的加密货币。

比特币(Bitcoin)

比特币是第一个 加密货币 ,建立在比特币区块链之上。它是由一个人或一群人以中 本聪 的笔名于 2009 年创建的。只能铸造2100 万枚,其中大约1890 万枚已经在流通。

销毁(Burning)

加密货币 通过发送到只能接收而不能发出的钱包而被“烧毁”。销毁机制通常被用来造成通缩影响:流通中的 代币 越少,投资者持有的 代币 就越稀缺。

买跌(Buy the dip)

这是指在价格下跌后购买更多资产。例如,如果价格下跌 10,000 美元,比特币持有者可能会“逢低买入”。

冷钱包(Cold Wallet)

未连接到互联网的加密货币钱包。这些钱包更安全,更不容易受骗。

跨链(Cross-chain)

将数据、代币或资产从一个区块链发送到另一个区块链的能力。这不同于为在多个区块链上工作而构建的“ 多链 ”服务。

密码学(Cryptography)

一种信息加密形式,其中数据只能使用密钥进行解密。使用 工作量证明 协议的 区块链 依赖于解决极其复杂的密码学难题,以便挖掘和验证新区块。

加密货币(Cryptocurrency)

加密货币是 区块链 原生的代 。加密货币通常随着每个新区块的开采而铸造。例如,每 挖出 一个新的 以太坊 区块, 都会 获得两个以太币作为对矿工的补偿。

加密货币是一种代 。它们的诞生是它们的决定性因素:其他代币是使用构建在区块链之上的平台和应用程序创建的,而加密货币则内置于区块链的协议中。

去中心化应用(Dapps)

去中心化应用程序的缩写。

道(DAO)

一个去中心化的自治组织。DAO 是一个通过共识做出决策的组织:所有 治理代币的 持有者都在组织决策中获得投票权,投票最多的解决方案是 DAO 的行动方案。想象一个去中心化的投资银行,但不是由基金经理做出投资决定,而是由其 治理代币 的持有者投票决定如何投资其国库中的资金。

去中心化交易所(Decentralized exchange)

去中心化交易所用于购买和交易 加密货币 。与典型的交易所不同,这些交易所使用绕过任何中心化权威的点对点交易。其中包括 Uniswap 和 Sushiswap。

去中心化金融(DeFi)

“decentralized finance”的缩写。DeFi 是使用 区块链 技术绕过中心化机构任何金融工具,例如 智能合约 DAO

钻石手(Diamond Hands)

钻石手是长期或在价格动荡期间持有金融资产的人。

DYOR

“Do Your Own Research”的缩写。

以太币(ETH)

在以太坊区块链上开采的 加密货币 。以太 的市值仅次于 比特币 ,但却是一种更常用的加密货币。大多数 山寨币 也是 基于以太坊构建的 ,因此与以太 币挂钩 。大多数 NFT 也建立在以太坊上,这就是为什么以太是 NFT 交易中使用的主要代币。

以太坊(Ethereum)

比特币 竞争的区块链。它旨在采用 比特币 开发人员开创的区块链技术,并将其用于更复杂的金融工具,如 智能合约

闪贷(Flash loan)

闪电贷是一种 DeFi 工具,允许在没有抵押品的情况下进行贷款。闪电贷允许您借钱购买资产,但前提是可以购买资产并在同一区块内偿还利息。想象一下,使用贷款购买一栋 100 万美元的房子,但只有当您已经排好另一个愿意支付足够费用让您偿还贷款和利息的买家时,贷款才会被批准。

这些贷款使用 智能合约 技术。

FUD

“fear, uncertainty and doubt”的缩写。这可能是合法的,例如人们对代币或 NFT 项目的安全性或合法性或安全性表示担忧,例如鼓励人们出售、降低资产价格的有组织的举动。

Gas

Gas 是您使用 以太坊 网络所要支付的价格。每笔交易都需要支付gas ,这取决于 区块链的 过载程度。每笔交易的价格通常在 50 美元到 500 美元之间,但在网络负载过重时价格可能会飙升。

治理代币(Governance token)

治理代币是赋予所有者对给定项目投票权的加密货币。另请参阅: DAO

GWEI

gas 的成本以 GWEI 表示。作为粗略的指导,当 gwei 低于 50 时,gas 会很便宜,而当 gwei 高于 100 时,gas 会很贵。

HODL

“hold”的故意拼写错误,用于鼓励人们在价格下跌期间持有他们的代币。

Layer 1和Layer 2

如果您涉足 加密货币, 您会听说Layer 1和Layer 2解决方案。Layer 1是 区块链 架构本身,而Layer 2是指建立在区块链之上的架构。

例如,以以太坊的高gas成本问题为例。Layer 1解决方案是让 以太坊区块 链更高效,例如通过采用 权益证明 协议。Layer 2解决方案的一个例子是 Immutible X,这是一个建立在以太坊之上的交易所,它使用 智能合约 技术允许无气体、碳中和的交易。

流动性市场(Liquid Market)

流动性市场是一个拥有大量买家和卖家的市场,它允许几乎立即完成买卖订单。 加密货币 市场具有流动性,而 NFT 市场则不然。大多数合法的加密货币可以随时买卖,因为 NFT 交易者需要列出待售物品,希望买家手动购买。

主网(Mainnet)

一个供公众使用的区块链协议将被放入主网。这将它与测试网区分开来,后者更像是区块链协议的测试版发布。

模因币(Memecoins)

许多加密货币旨在提供实用程序或服务为目的。Memecoins 不提供实用前景,纯粹作为投机资产存在。狗狗币是最知名的 ,但还有很多很多。


元掩码(MetaMask)

一种基于浏览器的在线数字钱包,主要用于 以太坊区块链 上的交易。

矿业(Mining)

挖矿是验证交易并将区块添加到区块 链的过程 。这通常涉及解决复杂 密码 问题的强大计算机。至关重要的是,这也是将新的 加密货币 添加到流通中的方式。

矿机(Mining Rig)

为挖掘 加密货币 的特定目的而设置的功能强大的计算机。

矿场(Mining Farm)

全天运行的采矿设备仓库(或房间),用于挖掘 加密货币

铸币(Mint)

在区块链上,铸币意味着验证信息并将其作为区块链上的一个块。

“铸造” NFT 意味着在公开发售期间从其创建者那里购买它。“铸币价格”是指它的创造者出售它的价格——例如无聊猿游艇俱乐部的“铸币价格”是 0.08 以太币。在一个集合中的所有 NFT 都被铸造之后,想要接触该集合的交易者需要从 OpenSea 等二级市场购买它们。

多链(Multi-chain)

设计用于多个 区块链 的应用程序或服务。这与 跨链 应用程序和服务不同, 跨链 应用程序和服务旨在将数据或资产从一个区块链发送到另一个区块链。

月球(MOON)

价格的急剧飙升被称为“mooning”或“a moon”。“To the moon(去月球)”是一个常见的短语。

NFT

不可替代的代币(Non-fungible token)。这些是证明数字资产所有权的数字契约。目前,它们与艺术相关,但 NFT 可以证明任何数字的所有权。

链下/链上(Off-Chain/On-chain)

链上是指存在于 区块链 上的东西,链下是指存在于 区块 链之外的东西。 加密货币 是链上货币,法定货币是链下货币。

OpenSea

它是最大的 NFT 市场,专门研究基于 以太坊 的 NFT。(建立在不同区块链上的 NFT 通常在专门的市场上出售。例如,Solana NFT 在 Solanat 上出售。)

Play to Earn(P2E)

Play to Earn (P2E) 游戏 集成了区块链,并以 游戏 内 加密货币 奖励玩家。这些 游戏 中的加密货币可以兑换成比特币或以太币。最突出的例子是 Axie Infinity,玩家可以获得 Smooth Love Potion ($SLP)。

工作量证明(Proof of Work)

工作量证明(POW)是一种共识机制,通过该机制将块添加到区块链中。工作量证明要求矿工解决复杂的 密码学 难题,这需要强大的采矿设备提供大量能源,以验证新的区块链交易。

工作量证明是一种安全且去中心化的共识机制,但效率低下是出了名的。这就是比特币和以太坊区块链的运作方式,尽管以太坊很快就会转向更高效 的权益证明(Proof of Stake)

权益证明(Proof of Stake)

面对工作量 证明 的巨大能源需求, 权益 证明(POS)是一种更新的共识机制,可以更有效地挖掘区块。权益证明允许 加密货币 持有者在相关区块 上验证新区块。

他们通过抵押他们的 加密货币来 做到这一点。网络用户质押他们的加密货币,如果他们的股份是通过随机算法选择的,他们就有机会验证一个新区块——为此他们将获得更多加密货币形式的奖励。质押的加密货币越多,选择用户验证新区块的机会就越大。

工作证明奖励那些花费最多计算能力来解决密码难题的人,而权益证明奖励那些长期投资加密货币的人。

抽水和倾销(Pump and mp)

抽水和倾销计划涉及对产品的人为刺激,从而导致人们购买并提高其价格。然后,抽水和倾销协调者以高价出售其资产,从而导致价格急剧下跌。

这些存在于传统市场中,但在 加密货币 交易中更为常见,因为微市值加密货币的低流动性使其价格更容易操纵。

地毯拉动(Rug pull)

地毯拉动是指 加密货币 的创造者消失,并带走资金。最近的一个例子是伪造的Squid Game 硬币,尽管这些硬币远非罕见。“地毯”本质上是“骗局”的简写。

中本聪(Satoshi Nakamoto)

比特币 创造者的化名。解释去中心化金融的必要性和解释比特币如何运作的白皮书由中本聪签署,但没有人知道真实的人是谁。据推测,中本聪实际上是几个人。


助记词(Seed Phrase)

当你创建一个 加密货币 钱包时,你会得到一个 12 字的种子短语。每次在新设备上登录钱包时,都需要使用助记词。 永远不要把你的助记词给任何人

分片(Sharding)

分片在 区块链上 分配网络负载,允许每秒处理更多事务。这听起来很枯燥,但它非常重要。 以太坊 将在明年整合分片,这将使使用它更便宜,对环境的破坏也更小。

垃圾币(Shitcoin)

Shitcoin 是一种不提供任何效用的 山寨币 ,无论是 memecoin 还是无效的 山寨币

丝绸之路(Silk Road)

Silk Road 是一个在线黑市,于 2013 年被 FBI 关闭。这是许多人第一次接触 加密货币的地方 ,因为 比特币 是该网站非法商品的流行支付方式。

智能合约(Smart contract)

智能合约是在满足所需条件时自行执行的数字合约。例如,如果 Wallet X 向 Wallet Y 发送 0.08 ether,Wallet Y 向 Wallet X 发送 NFT Z。它们最常用于自动交易,但也可用于更复杂的用途,例如 快速贷款

稳定币(Stable coin)

稳定币是与美元挂钩的加密货币。其中包括 Tether 和 USDC。他们的目的是让 加密货币 交易者将他们的代币保存在加密生态系统中,而不会经历 比特币 以太币 价格波动的波动。

质押(Staking)

权益质押是在加密货币钱包中锁定持有资金,从而支持区块链网络运营。从本质上讲,它包括锁定加密货币以获得奖励。在大多数情况下,该流程需要用户使用个人加密钱包参与到区块链活动中。

权益质押的概念与权益证明(PoS)机制密切相关。它被用于许多基于PoS或相类似的其他区块链系统中。

TLT

“think long term”的缩写。

代币(Token)

代币是多种形式的区块链资产。像 比特币 这样的 加密货币 是一种代币。其他类型包括 治理代币 ,它授予持有者在 DAO 或服务中的投票权,或 实用代币 ,其中根据持有的代币数量授予对服务的访问权限。

TXN

交易(transaction)的缩写。

实用代币(Utility Token)

旨在提供某种功能的代币。这些可以是对应用程序、服务或 游戏 的访问。示例包括 Filecoin,它授予对基于区块链的数字存储的访问权限,以及 Link,它连接 了链下 类型数据的智能合约。

虚荣地址(Vanity Address)

由 Ethereum Name Service 等公司提供的个性化钱包地址。它允许您将钱包地址更改为您选择的单词或短语,例如 CNET.eth。

Vaporware

承诺但从未真正进入市场的产品。该术语在 90 年代后期随着最初的互联网繁荣而流行起来,并且由于阴暗的 加密货币 创造者而得到了复兴。

维塔利克·布特林(Vitalik Buterin)

以太坊区块链 背后的创造者。

钱包(Wallet)

加密货币钱包是您可以存储加密货币和 NFT 的地方。这些钱包可以是热钱包或冷钱包——即连接到互联网的浏览器钱包或未连接到互联网的物理硬件。钱包可以读写,这意味着它们可以接收信息,也可以作为签名或在线 ID。

Web 3

Web3 是区块链爱好者想象的互联网的下一次迭代。从互联网发明到 2005 年左右,Web1 是只读互联网。Web2 指的是用户能够制作内容并将其上传到互联网上的出现。Web3 将是一个集成了区块链的互联网。想象一下,将您的社交媒体帖子作为 NFT 拥有,使用像以太币这样的 加密货币 作为通用货币,并将您的钱包作为一种 ID 形式而不是电子邮件/密码组合。

鲸(Whale)

持有大量加密货币的人。

白名单 ( Whitelist)

加密货币 NFT 的 预售清单。列入白名单的投资者可以在公开发行前购买资产,有时以折扣价购买。

WAGMI

“we're all going to make it”的缩写。


㈡ 详解比特币挖矿原理

可以将区块链看作一本记录所有交易的公开总帐簿(列表),比特币网络中的每个参与者都把它看作一本所有权的权威记录。

比特币没有中心机构,几乎所有的完整节点都有一份公共总帐的备份,这份总帐可以被视为认证过的记录。

至今为止,在主干区块链上,没有发生一起成功的攻击,一次都没有。

通过创造出新区块,比特币以一个确定的但不断减慢的速率被铸造出来。大约每十分钟产生一个新区块,每一个新区块都伴随着一定数量从无到有的全新比特币。每开采210,000个块,大约耗时4年,货币发行速率降低50%。

在2016年的某个时刻,在第420,000个区块被“挖掘”出来之后降低到12.5比特币/区块。在第13,230,000个区块(大概在2137年被挖出)之前,新币的发行速度会以指数形式进行64次“二等分”。到那时每区块发行比特币数量变为比特币的最小货币单位——1聪。最终,在经过1,344万个区块之后,所有的共20,999,999.9769亿聪比特币将全部发行完毕。换句话说, 到2140年左右,会存在接近2,100万比特币。在那之后,新的区块不再包含比特币奖励,矿工的收益全部来自交易费。

在收到交易后,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。

每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表:

交易的语法和数据结构必须正确。

输入与输出列表都不能为空。

交易的字节大小是小于MAX_BLOCK_SIZE的。

每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。

没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。

nLockTime是小于或等于INT_MAX的。

交易的字节大小是大于或等于100的。

交易中的签名数量应小于签名操作数量上限。

解锁脚本(Sig)只能够将数字压入栈中,并且锁定脚本(Pubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。

池中或位于主分支区块中的一个匹配交易必须是存在的。

对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。

对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,那么将被加入到孤立交易池中。

对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。

对于每一个输入,引用的输出是必须存在的,并且没有被花费。

使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。

如果输入值的总和小于输出值的总和,交易将被中止。

如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。

每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。

以下挖矿节点取名为 A挖矿节点

挖矿节点时刻监听着传播到比特币网络的新区块。而这些新加入的区块对挖矿节点有着特殊的意义。矿工间的竞争以新区块的传播而结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的开始。

验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交易记录。

A节点需要为内存池中的每笔交易分配一个优先级,并选择较高优先级的交易记录来构建候选区块。

一个交易想要成为“较高优先级”,需满足的条件:优先值大于57,600,000,这个值的生成依赖于3个参数:一个比特币(即1亿聪),年龄为一天(144个区块),交易的大小为250个字节:

High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

区块中用来存储交易的前50K字节是保留给较高优先级交易的。 节点在填充这50K字节的时候,会优先考虑这些最高优先级的交易,不管它们是否包含了矿工费。这种机制使得高优先级交易即便是零矿工费,也可以优先被处理。

然后,A挖矿节点会选出那些包含最小矿工费的交易,并按照“每千字节矿工费”进行排序,优先选择矿工费高的交易来填充剩下的区块。

如区块中仍有剩余空间,A挖矿节点可以选择那些不含矿工费的交易。有些矿工会竭尽全力将那些不含矿工费的交易整合到区块中,而其他矿工也许会选择忽略这些交易。

在区块被填满后,内存池中的剩余交易会成为下一个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输入时所引用UTXO的深度(即交易“块龄”)也会随着变大。由于交易的优先值取决于它交易输入的“块龄”,所以这个交易的优先值也就随之增长了。最后,一个零矿工费交易的优先值就有可能会满足高优先级的门槛,被免费地打包进区块。

UTXO(Unspent Transaction Output) : 每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。

块龄:UTXO的“块龄”是自该UTXO被记录到区块链为止所经历过的区块数,即这个UTXO在区块链中的深度。

区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。假设此时一个区块的奖励是25比特币,A挖矿的节点会创建“向A的地址支付25.1个比特币(包含矿工费0.1个比特币)”这样一个交易,把生成交易的奖励发送到自己的钱包。A挖出区块获得的奖励金额是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。

A节点已经构建了一个候选区块,那么就轮到A的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。比特币挖矿过程使用的是SHA256哈希函数。

用最简单的术语来说, 挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。 哈希函数的结果无法提前得知,也没有能得到一个特定哈希值的模式。举个例子,你一个人在屋里打台球,白球从A点到达B点,但是一个人推门进来看到白球在B点,却无论如何是不知道如何从A到B的。哈希函数的这个特性意味着:得到哈希值的唯一方法是不断的尝试,每次随机修改输入,直到出现适当的哈希值。

需要以下参数

• block的版本 version

• 上一个block的hash值: prev_hash

• 需要写入的交易记录的hash树的值: merkle_root

• 更新时间: ntime

• 当前难度: nbits

挖矿的过程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。

简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6,你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。

如前所述,目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整?

比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币发行速率和交易达成速度的基础。不仅是在短期内,而是在几十年内它都必须要保持恒定。在此期间,计算机性能将飞速提升。此外,参与挖矿的人和计算机也会不断变化。为了能让新区块的保持10分钟一个的产生速率,挖矿的难度必须根据这些变化进行调整。事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标。简单地说,难度被设定在,无论挖矿能力如何,新区块产生速率都保持在10分钟一个。

那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。每2,016个区块(2周产生的区块)中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的(或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。

为了防止难度的变化过快,每个周期的调整幅度必须小于一个因子(值为4)。如果要调整的幅度大于4倍,则按4倍调整。由于在下一个2,016区块的周期不平衡的情况会继续存在,所以进一步的难度调整会在下一周期进行。因此平衡哈希计算能力和难度的巨大差异有可能需要花费几个2,016区块周期才会完成。

举个例子,当前A节点在挖277,316个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第277,316个区块(父区块为277,315)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。

比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。

每一个节点对每一个新区块的独立校验,确保了矿工无法欺诈。在前面的章节中,我们看到了矿工们如何去记录一笔交易,以获得在此区块中创造的新比特币和交易费。为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。

比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块,它将尝试将新的区块连接到到现存的区块链,将它们组装起来。

节点维护三种区块:

· 第一种是连接到主链上的,

· 第二种是从主链上产生分支的(备用链),

· 第三种是在已知链中没有找到已知父区块的。

有时候,新区块所延长的区块链并不是主链,这一点我们将在下面“ 区块链分叉”中看到。

如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。

选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。

因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是, 每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。

当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。

分叉之前

分叉开始

我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。

假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。

比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。

分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。

所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“红色”区块为胜出者的节点现在会看到两个链: “蓝色-绿色-粉色”和“蓝色-红色”。 如上图所示,这些节点会根据结果将 “蓝色-绿色-粉色” 这条链设置为主链,将 “蓝色-红色” 这条链设置为备用链。 这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识 。因为“红”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。全网将 “蓝色-绿色-粉色” 这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。

从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。

比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。

㈢ 谁是最大的比特币持有者

作者| 哈希派-LucyCheng

比特币被绝大部分人认为是世界上最为透明的支付网络没错,但它的地址是由用户钱包匿名生成的;所以“谁是BTC最大的持有者”一直以来都没有准确的答案。根据网络资料及Bitinfocharts的数据显示,比特币富豪榜前十名内除了半数已知的交易所钱包之外,其他皆为持有者不详的神秘地址。

比特币前十名富豪榜地址(数据源自:bitinfocharts.com)

这些地址大都以接收比特币为主,其中最为神秘的是BTC富豪榜里排名第七的(有分析指出此为Mt.Gox于2011年黑客攻击中被盗BTC的接收地址);该地址于2011年3月1日转入的79956枚比特币至今仍未转出。如果按照当时0.92美元的价格来计算,这七万多枚比特币截至目前为止已经翻了一万多倍。

地址的比特币转入转出情况(数据源自:bitinfocharts.com)

而更为重要的是,持币者和钱包地址并不是简单的一对一关系;将BTC分散存储在多个地址内才是大多数比特币富豪们的常规操作。也就是说,不仅仅是谁,就连他持有多少比特币我们也无法找到确切的答案。

图片源自:quora.com

不过多年以来,大家还是能从领域的花边新闻以及部分好奇人士的分析研究中,得到一些不太准确但有意思的结论。

比如说,纽约加密货币交易所Gemini的所有人Winklevoss兄弟曾在2013年表示,他们拥有当前流通量约1%的比特币(按照该时间点约1200万的BTC流通总量来看,这两兄弟大概持有12万枚比特币)。而同样拥有六位数比特币的还有在《东方时空》声称自己是中国持有比特币第一人的李笑来、被称为“比特币耶稣”的Roger Ver、收缴了丝绸之路运营者14.4万BTC的FBI以及在打击犯罪中没收二十多万枚比特币的保加利亚执法部门。

另外撇开这些花边新闻,根据RSA算法提出者之一Adi Shamir发布的论文《Quantitative Analysis of the Full Bitcoin Transaction Graph》中的说法,拥有比特币最多的人持有量可能不多于70万BTC。这位以色列数学家通过分析比特币前18000块链的交易数据得出, 历史 上出现过持币量大于50万BTC的有两个实体(包括个人以及交易机构),而且收入(不算支出)最多的人交易转入数量在70万BTC以下。但需要强调的是,这已经是2012年的分析了,八年后的今天数据可能得刷新一下。

往期回顾: (十 )最夸张的比特币估价是多少? 下期预告: (十二) 2100万并不是比特币的最终总量 比特币你不知道的故事系列合集,将持续更新,敬请期待......

㈣ Transaction交易是什么

是发送到比特币网络的一条消息,通告全网一次比特币的所有权转移发生了,使得接收者能够花费掉收到的比特币,同时组织发送者再次使用已经发送了的比特币。

㈤ 比特币有无追踪性

比特币有追踪性。
比特币的交易信息可以被所以人看到(这里指资金流动去向,比如你把多少比特币转到了另外一个账户),但是与这个账户关联的用户信息是看不到的。
对于单笔比特币的交易实时追踪溯源需求,可以通过访问区块链浏览器,输入交易产生的唯一txid(transactionid)去观察资金流向。

㈥ UXTO与余额

区块链入门从使用钱包开始,我们最关注的是钱包的账户余额。可看过很多区块链资料以后,一直存在一个疑问,钱包的余额信息存在区块链的什么位置?一直没有找到,只有一个相近的概念叫UTXO(Unspent Transaction Output),但看完以后还是对应不上。直到翻遍网上所有关于UXTO的资料,才知道在中本聪设计的比特币系统中,并没有余额这个概念,“比特币余额”是由比特币等钱包应用派生出来的产物。钱包的余额是通过与账户相关的多个UXTO算出来的。下面且听我详细道来。

了解过一点点会计学,我们现在的会计系统绝大部分采用的是一种叫做“借贷记账法”的方法,账目分成借方和贷方,每发生一笔业务都要登记两个以上的科目。

简单来说,Alice转账给Bob 1美元,使用借贷记账法至少要产生两条账目,Alice账户减少1美元,Bob账户增加1美元。这种记账法在企业经营、企业审计中有无数的好处。但是这种记账法也有一个最大的缺点,就是容易产生记账错误和记账误差。一笔交易需要登记两条以上的账目,本质上记录的是“交易的结果”,而不是“交易本身”。

中本聪发明了UTXO(Unspent Transaction Output)交易模型,并将其应用到比特币当中。UTXO是“未花费的交易输出”,简单来说就是,每一笔比特币交易实际上都是由若干个交易输入和输出组成的。交易输入是资金来源,交易输出是资金去向,每一笔交易都要从交易输入中花费出去一部分,这一部分就是未花费的交易输出(UTXO)。每一次的交易输入都可以追溯到之前的UTXO,直至最初的挖矿所得。

由挖矿所得创建的比特币交易,是每个区块中的首个交易,又称之为coinbase交易,它由矿工创建,没有上一笔交易输出。

在比特币交易中 UTXO 就是基本单位,一个UTXO一旦被创建就不可被继续分割,它只能当作是下一笔交易的输入被花费掉,花费后产生新的UTXO,这样周而复始地实现货币的价值转移。所以我们在比特币钱包中所看到的账户余额,实际上是钱包通过扫描区块链并聚合所有属于该用户的UTXO计算得来的。

因此,当我们在说某人拥有1枚比特币的时候,我们实际上说的是,在当前的区块链记录中,有若干笔交易的 UTXO 收款地址写的是这个人的钱包地址,这些UTXO的总和是1个比特币。

比特币的UXTO系统遵守两个规则:

我们以以太账户为例,打开 etherscan.io ,选择BLOCKCHAIN->All Accounts,这样可以看到所有地址与余额,可以选择其中一个查看详细信息。如果看不懂, 没关系,把自己的以太地址输入到右上角的搜索框回车后,会显示地址的余额和详细交易记录,如下图。

至此,我能理解李笑来老师说为什么他的账户没有余额,只有UXTO了,O(∩_∩)O哈哈~,内行人不要说外行话嘛。

㈦ 比特币机制研究

现今世界的电子支付系统已经十分发达,我们平时的各种消费基本上在支付宝和微信上都可以轻松解决。但是无论是支付宝、微信,其实本质上都依赖于一个中心化的金融系统,即使在大多数情况这个系统运行得很好,但是由于信任模型的存在,还是会存在着仲裁纠纷,有仲裁纠纷就意味着不存在 不可撤销的交易 ,这样对于 不可撤销的服务 来说,一定比例的欺诈是不可避免的。在比特币出来之前,不存在一个 不引入中心化的可信任方 就能解决在通信通道上支付的方案。
比特币的强大之处就在于:它是一个基于密码学原理而不是依赖于中心化机构的电子支付系统,它能够允许任何有交易意愿的双方能直接交易而不需要一个可信任的第三方。交易在数学计算上的不可撤销将保护 提供不可撤销服务 的商家不被欺诈,而用来保护买家的 程序化合约机制 也比较容易实现。

假设网络中有A, B ,C三个人。
A付给B 1比特币 ,B付给C 2比特币 ,C付给A 3比特币
如下图所示:

为了刺激比特币系统中的用户进行记账,记账是有奖励的。奖励来源主要有两方面:

比特币中每一笔交易都会有手续费,手续费会给记账者

记账会有打包区块的奖励,中本聪在08年设计的方案是: 每10分钟打一个包,每打一个包奖励50个比特币,每4年单次打包的奖励数减半,即4年后每打一个包奖励25个比特币,再过四年后就奖励12.5个比特币... 这样我们其实可以算出比特币的总量:

要说明打包的记录以谁为准的问题,我们需要引入一个知名的 拜占庭将军问题 (Byzantine failures)。拜占庭将军问题是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。

假设有9个互相远离的将军包围了拜占庭帝国,除非有5个及以上的将军一起攻打,拜占庭帝国才能被打下来。而这9个将军之间是互不信任的,他们并不知道这其中是否有叛徒,那么如何通过远距离协商来让他们赢取战斗呢?

口头协议有3个默认规则:
1.每个信息都能够被准确接收
2.接收者知道是谁发送给他的
3.谁没有发送消息大家都知道
4.接受者不知道转发信息的转发者是谁
将军们遵循口头规则的话,那就是下面的场景:将军1对其他8个将军发送了信息,然后将军2~9将消息进行转达(广播),每个将军都是消息的接受者和转发者,这样一轮下来,总共就会有9×8=72次发送。这样将军就可以根据自己手中的信息,选择多数人的投票结果行动即可,这个时候即便有间谍,因为少数服从多数的原则,只要大部分将军同意攻打拜占庭,自己就去行动。
这个方案有很多缺点:
1.首先是发送量大,9个将军之间要发送72次,随着节点数的增加,工作量呈现几何增长。
2.再者是无法找出谁是叛徒,因为是口头协议,接受者不知道转发信息的转发者是谁,每个将军手里的数据仅仅只是一个数量的对比:

这里我们假设有3个叛徒,在一种最极端的情况下即叛徒转发信息时总是篡改为“不进攻”,那么我们最坏的结果就如上图所示。将军1根据手里的信息可以推出要进攻的结论,却无法获知将军里面谁是叛徒。
这样我们就有了方案二:书面协议。

书面协议即将军在接受到信息后可以进行签字,并且大家都能够识别出这个签字是否是本人,换种说法就是如果有人篡改签字大家可以知道。书面协议相对比口头协议就是增加了一个认证机制,所有的消息都有记录。一旦发现有人所给出的信息不一致,就是追查间谍。
有了书面协议,那么将军1手里的信息就是这样的:

可以很明显得看出,在最坏的一种情况——叛徒总是转发“不进攻”的消息之下,将军7、8、9是团队里的叛徒。
这个方案解决了口头协议里历史信息不可追溯的问题,但是在发送量方面并没有做到任何改进。

在我们的示例中,比特币系统里的每个用户发起了一笔交易,都会通过自己的私钥进行签名,用数学公式表示就是:

所以之前的区块就变成了这样:

这样每一笔交易都由交易发起者通过私钥进行数字签名,由于私钥是不公开的,所以交易信息也就无法被伪造了。

如书面协议末尾所说的那样,书面协议未能解决信息交流过多的问题。当比特币系统中存在上千万节点的时候,如果要互相广播验证,请求响应的次数那将是一个非常庞大的数字,显然势必会造成网络拥堵、节点处理变慢。为了解决这个问题,中本聪干脆让整个10分钟出一个区块,这个区块由谁来打包发出呢?这里就采用了工作量证明机制(PoW)。工作量证明,说白了就是解一个数学题,谁先解出来数学题,谁就能有打包区块的权力。换在拜占庭将军的例子中就是,谁先做出数学题,谁就成为将军们里面的总司令,其他将军听从他发号的命令。

首先,矿工会将区块头所占用的128字节的字符串进行两次sha256求值,即:

这样求得一个值Hash,将其与目标值相比对,如果符合条件,则视为工作量证明成功。
工作量证明成功的条件写在了区块链头部的 难度数 字段,它要求了最后进行两次sha256运算的Hash值必须小于定下的目标值;如果不是的话,那就改变区块头的 随机数 (nonce),通过一次次地重复计算检验,直到符合条件为止。

此外, 比特币有自己的一套难度控制系统,使得比特币系统要在全网不同的算力条件下,都保持10分钟生成一个区块的速率。这也就意味着:难度值必须根据全网算力的变化进行调整。难度调整的策略是由最新2016个区块的花费时长与期望时长(期望时长为20160分钟即两周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整(或变难或变易)。也就是说,如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。

PoW其实在比特币中是做了以下的三件事情。

这样可以防止一台高性能机器同时跑上万个节点,因为每完成一个工作都要有足够的算力。

有经济奖励就会加速整个系统的去中心化,也鼓励大家不要去作恶,要积极地按照协议本来的执行方式去执行。(所以说,无币区块链其实是不可行的,无币区块链一定导致中心化。)

也就是说,每个节点都不能以自身硬件条件去控制出快速度。现在的比特币上平均10分钟出一个块,性能再好的机器也无法打破这个规则,这就能够保证 区块链是可以收敛到共同的主链上的 ,也就是我们所说的共识。

综上,共识只是PoW三个作用中的一点,事实上PoW设计的作用有点至少有这么三种。

默克尔树的概念其实很简单,如图所示

这样,我们区块的结构就大致完整了,这里分成了区块头和区块体两部分。

区块链的每个节点,都保存着区块链从创世到现在的每一区块,即每一笔交易都被保存在节点上,现在已经有几百个GB了。
每当比特币系统中有一笔新的交易生成,就会将新交易广播到所有的节点。每个节点都把新交易收集起来,并生成对应的默克尔根,拼接完区块头后,就开始调整区块头里的随机数值,然后就开始算数学题

将算出的result和网络中的目标值进行比对,如果是结果是小于的话,就全网广播答案。其他矿工收到了这个信息后,就会立马放下手里的运算,开始下一个区块的计算。
举个例子,当前A节点在挖38936个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第38936个区块(前一个区块为38935)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
整个流程就像下一张图所展示的这样:

简单来说,双花问题是一笔钱重复花了两次。具体来讲,双花问题可分为两种情况:
1.同一笔钱被多次使用;
2.一笔钱只被使用过一次,但是通过黑客攻击或造假等方式,将这笔钱复制了一份,再次使用。
在我们生活的数字系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,为了解决双花问题,日常生活中是依赖于第三方的信任机构的。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统,比特币通过UTXO、时间戳等技术的整合来解决双花问题。

UTXO的英文全称是 unspent transaction outputs ,意为 未使用的交易输出 。UTXO是一种有别于传统记账方式的新的记账模型。
银行里传统的记账方式是基于账户的,主要是记录某个用户的账户余额。而UTXO的交易方式,是基于交易本身的,甚至没有账户的概念。在UTXO的记账机制里,除了货币发行外,所有的资金来源都必须来自于前面某一个或几个交易。任何一笔的交易总量必须等于交易输出总量。UTXO的记账机制使得比特币网络中的每一笔转账,都能够追溯到它前面一笔交易。
比特币的挖矿节点获得新区块的挖矿奖励,比如 12.5 个比特币,这时,它的钱包地址得到的就是一个 UTXO,即这个新区块的币基交易(也称创币交易)的输出。币基交易是一个特殊的交易,它没有输入,只有输出。
当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。
这就是为什么有人说在这个世界上根本没有比特币,只有 UTXO,你的地址中的比特币是指没花掉的交易输出。
以Alice向Bob进行转账的过程举例的话:

UTXO 与我们熟悉的账户概念的差别很大。我们日常接触最多的是账户,比如,我在银行开设一个账户,账户里的余额就是我的钱。
但在比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址中都有着多个 UTXO,你的钱是所有这些地址中的 UTXO 加起来的总和。
中本聪发明比特币的目标是创建一个点对点的电子现金,UTXO 的设计正可以看成是借鉴了现金的思路:我们可能在这个口袋里装点现金,在那个柜子角落里放点现金,在这种情况下不存在一个账户,你放在各处的现金加起来就是你所有的钱。
采用 UTXO 设计还有一个技术上的理由,这种特别的数据结构可以让双重花费更容易验证。对比一下:

㈧ 比特币的加密(秘钥、地址、脚本验证)

https://en.bitcoin.it/wiki/Address

https://www.cnblogs.com/zhaoweiwei/p/address.html
生成方式:

P2PKH的交易脚本

举个真实的例子:
ScriptSig:
PUSHDATA(72)[9701] PUSHDATA(33)
[]

这里面的一个scriptSig由2部分组成,第一部分是签名,第二部分是公钥,PUSHDATA(N),表示要压入栈顶的byte,1个byte表示2个字符,PUSHDATA(72)表示压入144个字符

Output Scripts
HASH160 PUSHDATA(20)[] EQUAL
DUP HASH160 PUSHDATA(20)[] EQUALVERIFY CHECKSIG

第二个找零output地址因为是P2PKH开头的,所以格式和描述的一样

https://www.hibtc.org/2428.html
结合多重签名一起使用
scriptSig: ..signatures... <serialized script>
scriptPubKey: OP_HASH160 <scriptHash> OP_EQUAL

表示一共有n个参与方,只要有m个参与方同意了这笔交易,则这笔交易就生效了,具体的规则是通过scriptHash里面的脚本内容决定的
m-of-n multi-signature transaction:
scriptSig: 0 <sig1> ... <script>
script: OP_m <pubKey1> ... OP_n OP_CHECKMULTISIG

ScriptSig:
0[] PUSHDATA(72)[1201] PUSHDATA(71)[01] PUSHDATA1[]

HASH160 PUSHDATA(20)[] EQUAL

结合P2SH的新特征

https://en.bitcoin.it/wiki/Transaction
目前比特币支持两种类型的交易:Pay-to-PubkeyHash、Pay-to-Script-Hash

验证一笔P2PKH交易的一个输入是否合法:

总结:先验证这笔output是不是属于该用户,再验证该用户的签名是否有效

参考:
https://blog.csdn.net/jerry81333/article/details/56824166

初级版的比特币交易
https://www.jianshu.com/p/a57795ec562c

㈨ bitcoin: coinbase的tx结构

查找下 block 400000 的coinbase的交易.

第一个 Transactions 就是 coinbase .

使用rpc命令 getrawtransaction 得到 rawtransaction .

在使用 decoderawtransaction 解析 上一步得到的 rawtransaction ,即 794d88ac00000000

结果如下:

coinbase tx手动分析下

tx结构不一样 https://btc.com/
bip143

参考:

sipa的回答 https://bitcoin.stackexchange.com/a/20725

https://en.bitcoin.it/wiki/Transaction

https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer

https://bitcoin.stackexchange.com/a/5241

㈩ 交易及记账(上) | 小白学比特币之二

在 精读「Mastering Bitcoin」1 中, 提到比特币不仅是一个 电子现金 (系统),也是一个公开的账本,这账本上记录了每笔交易的信息。用比特币交易,其实就跟我们用人民币或者美元交易买卖东西一样。作者给比特币交易行为的定义是:

那么,在比特币系统里,是以什么样的形式将这些交易记录下来的呢?

跟传统记账一样,在比特币系统中也对交易采用复式记账的方法 (double-entry bookkeeping ledger),直白点翻译就是双入口记账。复式记账,简单理解就是以下两点 [1] :

每一笔交易都要至少在两个账户上进行记录 ,在会计记账中有三个基本账户也就是资产账户、负债账户以及所有者权益账户,跟会计等式 资产(Assets) = 负债 (Liabiliteis) + 所有者权益 (Equity) 是一一对应的。那么单独每个账户又是以怎么样的方式呈现出来的呢?方法是每个账户都需要记录这个账户的debits和credits(见上图):

说完复式记账,再回到《Mastering Bitcoin》(精通比特币) ,在书中,作者给出的记账例子如下面那张截图;一笔交易中可以包含多个Input和output。这里的Input和output如何理解呢?

总结一下:

通过作者这句话, 可以看到比特币系统其实执行的是价值交易。更进一步地,可以理解为价值的输入和输出。

上笔交易和下笔交易之间会形成一个“无形的链”:

作者用一张图形象的说明了什么是“交易链”。

对于同一个地址而言,上一笔交易中的output将会作为下一笔交易的输入,这样就形成了一个交易链。

在上面的交易截图中,我们可以看到这几笔交易里有 spent unspent change change 为找零地址,为什么会有找零地址呢?

比特币系统中的找零概念和平时用现金交易的找零概念是一样的,如果你要买一个1块钱的包子,但是你身上只有一张20块钱的纸币,这个时候就需要包子铺老板找给你19元零钱。

在比特币系统中,每一个input就相当于一定面值的纸币。如果一笔交易中只包含一个Input,为20个BTC,当这个地址向其他地址支付1个BTC时候,就需要对方找还19个BTC。不同的是,比特币不像纸币那样只有几种面值固定的纸币,比特币系统可以随时创建“新面值”。

出于保护隐私的考虑,找零地址没必要跟原先的付款地址一样,通常钱包会生成一个新的找零地址。

在真实应用中,并不会在找零地址旁边标注 change 的字样,如下图显示(截图来自blockchain.info上的某笔交易),

比特币系统可以随时创建“新面值”来用于找零,而且这“零钱”可以用于下次交易。在每个输出(output)记录里,可消费的比特币数量会被标记成 unspent ,这样的输出有一个专门的名字叫做 Unspent Transaction Outputs (UTXO)。可以把unspent的输出理解为面值不同的、可用于下次消费的纸币,就好像10元面值纸币、100元面值纸币那样。

[1] Mastering Bitcoin 第二版 https://github.com/bitcoinbook/bitcoinbook
[2] http://learnmeabitcoin.com

热点内容
去邯郸职教中心坐几路车 发布:2025-05-26 05:09:52 浏览:890
区块链项目网址 发布:2025-05-26 04:50:06 浏览:99
coincola发送btc 发布:2025-05-26 04:41:42 浏览:564
比特币起始价格是多少 发布:2025-05-26 04:41:01 浏览:448
购买usdt后怎么买入狗狗币 发布:2025-05-26 04:36:40 浏览:184
区块链技术的投资逻辑 发布:2025-05-26 04:26:55 浏览:848
第九个比特币分叉币 发布:2025-05-26 04:04:33 浏览:963
区块链智能提货卡 发布:2025-05-26 03:57:44 浏览:729
从新洲家乐福去市民中心怎么走 发布:2025-05-26 03:44:16 浏览:864
昌岗去广州城市规划展览中心 发布:2025-05-26 03:29:47 浏览:739