看到不等于已结算
发送一枚币,在一两秒内交易就会在区块浏览器上显示。它已被广播:节点拥有它,矿工或验证者将其放在队列中,浏览器报告了它听到的信息。还没有发生的唯一重要的事情是——网络还没有同意这笔交易是账本的一部分。
这种同意发生在区块中。区块是一批交易,由一个矿工或验证者提出,网络的其余部分接受。当你的交易被包含在一个区块中时,它有一个确认。当另一个区块建立在它之上时,它有两个。计数就是你的交易被后续区块埋没的深度。
深度很重要,因为账本可以在短时间内分叉。两个矿工几乎同时找到一个区块;网络跟随两条链一两个区块,直到其中一条链拉开距离,另一条被放弃,以及仅在其中的每笔交易也被放弃。一个只有一个确认的交易可能在失败的一方。有六个确认的交易有六个区块的链,这些区块都必须被丢弃。
"六个确认"从何而来
这个数字不是民间传说。比特币白皮书第11节计算了控制网络一部分哈希算力的攻击者秘密建立更长链并替换被埋z个区块深处的交易的可能性。对于拥有网络10%算力的攻击者,结果是:
| 确认数 | 逆转的概率 |
|---|---|
| 1 | 20.5% |
| 2 | 5.1% |
| 3 | 1.3% |
| 4 | 0.35% |
| 5 | 0.09% |
| 6 | 0.024% |
每次确认将此攻击规模下的风险大约降低四倍。这条曲线就是为什么
有两个要点从表格中读出来。下降是指数级的,所以边际确认最初最有价值——从一个到两个确认移除了四分之三的风险,从五个到六个确认移除了剩余风险的四分之一。整个表格涉及一条链的出块时间和安全模型。六个比特币区块大约是一小时。在一条每三秒产生一个区块的链上,六个区块是十八秒,意义完全不同。
为什么不同币种的计数有所不同
每条链的结算方式不同,所以固定数量的区块并不代表固定的确定性。大致上,这个钱包接收存款的链分为三组:
- 工作量证明链——比特币、莱特币。分别每十分钟和两分半出一个区块;确定性随深度累积,完全如白皮书表格所述,逆转取决于哈希算力。
- 快速权益证明链——以太坊、Polygon、波场。每几秒出一个区块,特别是以太坊在两个epoch后达到显式最终性,大约十三分钟,在此之后区块无法在验证者不销毁自身质押的情况下被回滚。许多确认快速到达;有意义的阈值是最终性点。
- 共识账本链——XRP账本。没有挖矿,也没有竞争的分叉需要等待:验证者在几秒内就某个账本达成一致,关闭时即最终。XRP上的一次确认与比特币上的一次确认是完全不同的。
所以同一个赌场想要相同级别的确定性,最终对每种币都会得到不同的数字。这就是钱包向你显示的内容。
ENGINE-VERIFIEDFrom the client store, CoinStore.ts: every coin carries an ICoinMeta of fee, minWithdraw, minDeposit, confirmations and type, served by the backend per coin. The deposit screen renders it directly — the string in en.json reads “Only send {symbol} to this address, {confirm} confirmation required.” — and a pending deposit shows the status “Waiting Confirmation” until the count is met. The counts themselves are server configuration and can change; the screen, not this article, is the source of the current number.
为什么赌场要等待
运送实物商品的商店可以承受等待结算,因为商品在金额确定前不会离开。赌场无法这样做:存款被记入账户的那一刻,就可以下注,而赢的下注在几秒内就支付。如果存款随后被重组的链逆转,赌场已经支付了真实提现,但那笔钱已经不存在了。
这正是白皮书表格描述的攻击,针对的是赌场而非商家——存款、下注、尝试逆转存款。确认数是赌场在承担敞口前选择让该概率有多小。等待不是对你的不信任;是赌场拒绝在链上赌博。
提现时情况相反。赌场向你发送币时是发送者,其交易受同一规则约束——在浏览器中看到的零确认提现还不是你能花费的,接收交易所会在记入账户前应用自己的计数。
在说等待期间该做什么
- 在链的浏览器中打开交易——钱包将每种币链接到其自己的浏览器(比特币、Etherscan、Tronscan、XRPScan等等)——并观察确认数攀升。如果在攀升,没什么问题;还很早。
- 根据存款屏幕上的数字检查计数。已达到计数但仍显示等待的存款值得向支持团队发送包含交易哈希的消息;还没达到的只是还没到。
- 如果交易在工作量证明链上长时间保持零确认,可能是费用对当前需求设置得太低了。它没有失败——它在排队——这为什么会发生是单独的文章。
- 如果浏览器根本找不到交易,问题在确认之前:检查发送钱包,并检查它是否去了正确的网络。
等待状态就是系统在正常工作。在零确认时记入账户的赌场会更快,但最终会被上述机制完全抢劫——那个成本会回到每个玩家身上。钱坐在哪里是关于它着陆后发生什么的配套文章。
遊检查一轮游戏结果的最快方式
Dice:一次投掷,一个可验证的结果,存款到账的那一刻Dice →
常见问题
什么是区块链确认?
在包含你交易的区块上添加的一个新区块。零表示网络已看到该交易但尚未达成共识;每增加一个区块都会使交易被反转的可能性呈指数级降低。
为什么赌场需要多个确认?
因为已到账的存款可以立即下注和派出。如果存款随后因链重组而被反转,赌场将已向一笔不复存在的交易支付真实资金。确认数是赌场选择这种风险必须有多小。
为什么比特币是六个?
根据比特币白皮书的计算:拥有网络10%算力的攻击者有大约20%的机率反转单个确认的交易,六个确认后约为0.02%。六个确认是风险对于静止资金变得可忽略不计的地方。
Betkyo需要多少个确认?
每条链在服务器上单独设置,并在存款屏幕上地址旁边打印,因为不同的链以不同的速度结算且具有不同的安全模型。读取那里的数字;那就是当前的数字。
我的存款已经等待很长时间了。是否已丢失?
通常不会。在链浏览器中检查该交易:如果确认数在上升,它正在处理中;如果在比特币或莱特币上卡在零,手续费可能太低且它在队列中;如果浏览器找不到它,检查发送钱包和发送的网络。
来源和参考
- 中本聪,《比特币:一种点对点的电子现金系统》 — 第11节,确认表所取自的攻击者追上计算
- 以太坊关于权益证明最终性的文档 — 两个时期,大约十三分钟
- Betkyo客户端源代码:CoinStore.ts中的ICoinMeta.confirmations、locale/en.json中的depositWarn字符串、以及按链浏览器映射 — 该机制,而非这些数值,它们是服务器配置
本文中的游戏