主页 > imtoken苹果端手机下载平台 > 如何解决比特币开发的心智模型

如何解决比特币开发的心智模型

随着我在比特币开发方面获得越来越多的经验,我时不时会有一个顿悟,它完全改变了我的思维方式、我的想法,以及我处理钱包软件基本构建块的方式。 事实上,每次发生这种情况时,我都会以全新的视角完全重写我正在创建的钱包。

在过去的几天里,我想我已经意识到还有另一种更好的方法来做我现在正在做的事情。 不幸的是比特币模型,这次无法重写我的钱包,因为 Wasabi Wallet 拥有庞大的用户群,重构软件的性质可能风险太大。 但至少我可以与你分享这些见解。

1.解决心智模型

比特币钱包有地址,这些地址持有余额。

比特币转错到比特币现金地址了_比特币之父能不能随意制造比特币_比特币模型

我创建了我的第一个比特币钱包:DotNetWallet,并附带了一篇文章:构建你自己的比特币钱包。 这使用了这种心智模型。 但这不是比特币网络的运作方式。 区块链上没有地址,基于地址组织基本数据结构可以防止将来进行任何远程高级操作。

2. 交易心智模型

下一步是考虑交易而不是地址。 我的第二个比特币钱包:HiddenWallet,它是这样工作的:我有一堆交易,每当我必须做某事时,我需要向用户显示余额,当我找到未使用的 UTXO 时,我会删除所有计算。 这最终让我始终拥有正确的钱包状态并执行各种高级操作,但结果证明效率非常低,我需要添加各种辅助数据结构来减轻这种痛苦。

3.代币心智模型

比特币转错到比特币现金地址了_比特币模型_比特币之父能不能随意制造比特币

接下来,我转向 UTXO 模型,或者更确切地说,硬币模型。 我的代币很聪明,它们知道很多事情:谁花了它们,他们花了谁,标签,匿名设置等等……我的钱包的下一个迭代,Wasabi 钱包,使用这个数据结构作为基础。

交易开始了,我会把相关的UTXO组织成代币。

问题是随着软件的增长,当钱包变得过于臃肿时,那些检查我的代币列表的算法会变得非常慢。 所以我也开始改变我在钱包外添加代币的方式,这解决了一些边缘情况,但我担心它会让一切变慢比特币模型,这又会影响性能。 我需要一种方法来正确检查这些标记之间的关系。

4.心智模型图

比特币转错到比特币现金地址了_比特币模型_比特币之父能不能随意制造比特币

我的下一个小技巧是创建心智模型图。 如果我要创建一个图形数据结构,其中节点是我的标记,加权边将记录硬标记之间的关系,这可能没问题。

现在标记是顶点,尽管我会把一些东西移到边缘。 边缘是这里的重要部分。

代币心智模型的问题是代币通过 txid 相互连接:硬代币在哪个 tx 中,以及代币将在哪个 tx 中花费。 但实际上,代币之间存在着各种各样的联系。 例如,令牌将共享也应该链接的脚本。 具有相同主题标签的令牌也将被链接。

好吧,但为什么要担心体重呢? 以一笔交易为例:

比特币之父能不能随意制造比特币_比特币模型_比特币转错到比特币现金地址了

如何解决比特币发展的心智模型

假设输入 #0(token #0)和输出 #2(token #1)来自同一个用户,有 6 个不同的输出,所以 token #1 的匿名集是 6。但是如果 token 0 和 token 1 是在同一个地址? 然后令牌#1 的匿名集为 1。我们在 Wasabi 中处理这种关系,但是,这些额外的检查和启发式方法是资源密集型的,并且遍布整个代码库。 最好将这种关系添加到图的边缘,完全放弃匿名集的概念,转而支持概率模型。

如何解决比特币发展的心智模型

然后我们可以这样说:

比特币转错到比特币现金地址了_比特币模型_比特币之父能不能随意制造比特币

· 如果没有标签或脚本匹配,令牌#1 和令牌#0 链接的强度为 1/6。

· 如果有标签、脚本或脚本匹配,则无论交易如何,链接的强度都为 1。

引入更多的连接,并意识到链接的强度就是图的权重。 这将使我们能够做很多疯狂的图论事情。 例如,我们将能够决定哪些令牌最合乎逻辑地合并在一起,这将导致最小的隐私泄露,只需查看权重!

蝴蝶效应

乍一看,这些概念似乎微不足道,但这些级别的变化和调整可能会产生深远的影响。 早些时候,我以一种非常有趣的方式讨论了导致大影响的小变化,所以你可能想试一试。