
2018年Wolfram语言发布第11.3版时整合了区块链的内容,增加了一系列我们团队持续开发和改进的函数。目前 Wolfram可以无缝连接到比特币、以太坊、ARK(https://ark.io/)和 bloxberg(https://bloxberg.org/)的主网、测试网和开发网,Wolfram向分布式账本技术(DLT)空间引入了其通过Wolfram区块链实验室(https://www.wolframblockchainlabs.com/)可以在任何地方插入计算智能的功能,用于启用基于区块链的商业模型创新。
目前肆虐的流行病已经影响到了我们生活的很多方面,虽然我在Wolfram的工作没有受到影响,但是我的个人的生活由于缺少社交活动而发生了一些改变。其中一个对我生活方式的正面影响是,我每天晚上会花时间读小说和故事。在这项夜间活动中,我发现了爱伦坡的小说《爱伦坡惊悚短篇集-Tales of Mystery and Imagination》。这是一本后人汇编的小说集,作者在生前对密码学着迷不已。这本小说集有一篇小说吸引了我的注意,《金甲虫》(https://www.wolframalpha.com/input/?i=The+Gold%E2%80%90Bug&assumption=ClashPrefs_*Book.TheGoldBug-)。这本小说于1843年第一次出版,讲述了一个着迷于金色甲壳虫的人物,他还用解密方法破解了一个密码,这个密码将主人公引向了寻宝的路途。
我在Wolfram语言中对区块链内容的研究工作让我养成了可以在任何地方都尝试学习与之相关内容的习惯。我受故事中对密码使用的内容的吸引,尤其是其中一个对人工制品的描述引起了我的共鸣:
羊皮纸是很耐用的,几乎可以说是不会腐烂的。不重要的事情几乎不会用羊皮纸来记录,它虽然只是一小片纸,但实际上是可以被用来做备忘录的——用于记录一些需要长久被记住和保存的内容。
我觉得这个描述听起来很像区块链,所以我决定找一个真实的“区块链金甲虫”并使用Wolfram语言区块链工具(https://www.wolfram.com/language/12/blockchain/)来研究它。
在2020年6月10日,我刚好知道了一件发生在以太坊区块链(https://reference.wolfram.com/language/guide/Blockchain-Ethereum.html)的事情。那天,区块链空间中有一些标题写着,一笔在以太坊主网上移动134美元的交易产生了260万美元的费用。围绕在这个百万交易背后的理论从电脑程序错误讨论到了洗钱相关的主题。我的观点是,前者是代码中的程序错误(可以用软件补丁进行修复),后者是法律系统上的漏洞(总有一天可以由计算型合约(https://writings.stephenwolfram.com/2016/10/computational-law-symbolic-discourse-and-the-ai-constitution/)解决这个问题)。对我而言,这个事件看上去像是一个不错的备选研究对象。
新闻引用了交易参考代码ca8f8c315c8b6c48cee0675677b786d1babe726773829a588efa500b71cbdb65 作为故事的主线。
我们看看关于这个事件的一些信息:

我们再看看那天让推特系统崩溃的那个事件属性:

为了让这个信息易读,我们可以用美元来显示这些数字(使用当前以太汇率):

这个交易由于其高额的交易手续费显得非比寻常。为了对比,我们参考在与该交易处于同一区块—10237208—的五个随机交易并看看这些交易的费用情况:


最高的费用小于1美元,费用平均数为42美分。注意数额最大的交易并没有产生最高的费用:

我们研究的这个交易是由挖矿池子SparkPool(https://www.sparkpool.com/)挖出的。几个小时后,他们对此发了一篇推特(https://twitter.com/sparkpool_eth/status/1270688700968480768):



但是这个交易是谁发送的?对于发送端我们能有什么了解?

在写这篇博文的时候,我们能获取的最新消息是:

第一件我们能知道的信息是,这个地址接收的交易多于发出的交易:

账户目前的余额是88美分。
如同我们之前看到的一样,这个交易加进的区块10237208在6月10日被挖了:

那么这个地址在区块10237208时的状态是什么样的呢?关于这点我们也可以看到:

当时该地址上有超过46,000以太币(这是以太区块链中使用的基本虚拟货币)的余额:

按照写博文的当天,价值相当于$11,000,000:

而且,说到该区块,这个地址已经发送了57笔交易:

而在区块10219082之前则没有这个地址的任何消息:

所以这个地址第一次在区块链中的区块10219082中出现,发生在下面的日期和时间:

这大概是前面提到的那笔非比寻常的交易2.8天之前发生的事情:

我们来研究一下发送方交易的历史情况,看看能不能发现一些异常。
为了获取发送者的交易记录,我写了一段代码提取从第一次这个地址出现的区块开始到这个百万费用时间发生的区块为止的信息。
你不需要运行这段代码,因为从区块链提取信息需要花一段时间。如果你想要这个信息的话,我已经把这些公共信息放到Wolfram云端(https://www.wolfram.com/cloud/)了:

如果你想知道代码细节的话,下面就是了:





(注意:你应该对这些代码添加一个延迟,这样在连接到Wolfram节点的时候不会超过速率限制。)
有了这个数据,我们就可以绘制发送方的活动图,显示从该地址在第一次出现在区块链时起到事件发生为止之间发生的交易数量:



这些是在这个时间区间内收到和发出的交易数量的总数:

我在看这些图表的时候有一个小细节吸引了我的注意力。如果我们记下有超过一个交易发送的时间戳,会有如下结果:

你看到了吗?第一笔交易的时间戳就在这里:

这就说明两笔交易是在同一时间发送的,或者说得更精确一些,我们可以说它们在同一个区块中但是我们不知道它们究竟是因为同一时间发送还是因为矿工出于偶然把这两个交易放在了同一个区块内。
另外,根据交易索引,我们可以看见这笔神秘的交易是该区块内的第一个:


另一个比较明显的特点是,这是一个交易活跃的时间段,数个交易同时被接收:


这发生在下面两个时间点之间:


差不多是八个小时:

在这个时间框内共收到了4,127笔交易:

换句话说,在这段交易活跃的时间区间内,在第一笔交易发生之前该地址已经接收到的交易数量占73%:

虽然我们不能得出一个明确结论解释为什么在这段时间内交易量上升,但是我们可以看看通过它接收到的wei(以太币最小计量货币单位)的数量:

这里包括了发送方在区块高度10237208处87.46%的余额:

所以我们知道,在这个区块高度发送方持有的大部分财产都是在这个交易活跃的时间区间内收到的。
当我们回想第一个事件之前发送方的历史交易,我们可以看到多数交易是在6月10日发送的(注意该地址收到大部分资产的6月9日的前一天并没有交易发生):

这是在4小时的时间跨度内发生的:





提醒一下,这是高费用事情的同一天发生的。
我们还可以通过每笔交易之间的时间计算交易发送的平均频率:

可以看到交易之间的时间最小为24秒,最大为58.1分钟:

使用中位数抛去离群值:

大概每分钟都有一笔交易。
可视化视图给了我们更直观的观察:

同样,我们现在还是不要根据这些信息得出任何结论,而是开放讨论这个行为是否反映了一个程序或人类的行为。
这个故事最让人震惊的部分是这笔交易中高乎寻常的费用。接下来很自然地就想问,这个发送方真的是一位如此大方给小费的人吗?
通过检查这个地址发出的每一笔交易的费用,我们发现了另一项有意思的信息:除了这笔奇怪的交易外,发送方通常使用的费用都一样。

使用当前的汇率,wei的数量大概相当于43美分:

选择这个费用的原因现在还不得而知,但是我们可以肯定的是,这个地址在以太坊的整个交易历史中,除了六月这笔表现地异常大方的交易外,其余时候的行为都是很一致的。
我们可以找到任何关于交易接收方的信息吗?地址本身都是一些没有意义的符号,但是我们可以看看是否有交易被发送到同一个地址的情况:

看上去关于接收方的选择好像也没有什么特别值得在意的地方。如果我们重复这个计算过程寻找重复出现的发送方,也没有找到可以满足我们好奇心的信息:

抱着一丝希望,我们现在来看看将资金打到该地址又从该地址收到了以太币的地址列表:

这个结果看起来好像并没有什么用。我们现在只能遗憾的得出结论,发送者和接收者并不是这个故事的主要部分。
在伊恩弗莱明的小说“金手指”中,Auric Goldfinger说“一次是偶然,两次是巧合,三次就成了恶意敌对”。这句话会与我们今天想要研究的事情有关吗?
在同一天的晚些时候发生了另一笔有类似令人费解的行为的交易。在这笔交易中,另一个矿池Ethermine(https://ethermine.org/)把这笔交易加进了区块链。他们也对此发布了推特(https://twitter.com/etherchain_org/status/1270927030817873920):


这是我们能获得的第二次交易的信息:


注意这次交易中的费用和第一次交易的一样:

使用我们之前从第一项事件之前的时间段提取数据的同一段代码,我们现在可以获取第二笔交易前后的时间内的交易数据。
这在Wolfram云中也同样适用,可以节省你的计算时间:

同样,你们也可以运行我用的这段代码,不过有可能需要花上数分钟甚至数小时才能得到数据:


在这个图中,我们可以看到这个地址在这两笔奇怪的交易发生时间点前后五天的时间段内发出和接收的交易数量:


我们可以重复我们在第一笔交易时的流程,看看是否有交易在同一时间被发送出来,即包含在同一个区块内:

这里我们可以明显看到,确实有三个同时发生的交易:

奇怪的是,第二笔交易也是这个组别中的一部分:

然而,对比起第一个事件,这笔交易不是区块中的第一笔交易。而是三个连续交易中的第二笔,交易指数为36:


这是在两个事件发生时间点之间的时间内接收和发送的交易数量:

当我们比较第一个事件之前的时间段和两笔交易发生之间的时间段,我们可以看见一个奇怪的转变。在第一笔交易之后,发出的交易数量增长了一百倍,但接收交易的数量降到了之前数量的二十分之一:


我们还要注意到,我们考虑的从发送方出现在区块链中(区块10219082)到第一个事件所经过的时间为67.7小时。
第一个事件和第二个事件之间则相差17.7小时:


也就是说,在第一笔交易过去后的短时间内,发送方的活跃度得到了大幅提高(以该地址发送的交易数量而言)。
相比起第一笔交易发生之前的时间段,交易发送的频率也发生了改变:


由于一些我们不知道的原因,在第一个时间之后该地址的行为发生了显著的变化。我们知道的事情是,知道第二笔交易发生之前,发送方使用的费用数额一直是一样的:

第二笔交易后的行为如何呢?我们可以在下图中看到,从这个地址发送的交易数量在持续上升:


下图显示了我们分析的时间尺度:


我们可以从这些信息得知,这个地址即使在第二次事件之后也保持住了第一次交易后表现出的行为,即发送的交易数量大量增加,接收的交易数量减少。
总结一下这次的分析,我们总结一下最相关的结论:我们可以看到,产生了这两笔异乎寻常的这个地址仅仅在6月10日的第一笔交易之前几天才在区块链中出现。在这几天的时间中,这个地址在6月9日一个八小时的高活跃度时间段内收到了其账户余额中的大部分,但是当天没有发送任何交易。然后,在6月10日这笔奇怪交易发生前的几个小时,地址的行为开始变化,发送交易的速率差不多是每分钟一笔交易,但是接收交易的数量和前一天比降到了非常低的水平。该种行为方式在第二笔高费用交易后还在继续。总的来说,虽然地址接收的交易远大于其发送的交易,但是每次发送交易时都会使用同样的费用,除了这两次奇怪的事件之外。
我们还知道,这两笔奇怪的交易也有一些共同点:它们使用同样数额的费用,并且和该地址发送的其他交易一起包含在其对应的区块中。而且它们发生的时间点都是在该地址从一个接收大量交易的被动账户转变行为成为一个转出账上大多数资金的主动账户。
虽然这种事件加剧了是否应该大规模使用虚拟货币的争论,不可否认的是这是一项快速发展的科技,而且需要通过用户体验来提升其设计。这个技术有其科技计算的一面,但同时也有人性化的一面,尤其是考虑到区块链科技历史背后的哲学思想。
现在全球正在经历的事情可能对这一项新兴科技有深远的影响,虽然我们不能预知未来,但我们知道一定会有变化,我们需要理解这些变化并基于这些变化做出新的改变。
最后,我们并不像博文之前提到的那篇小说的主人公一样找到了宝藏。不过我们确实通过分析这件奇怪的事件并为这件事的讨论提供了一些有趣的发现,在区块链数据内容中进行了一番计算式的探索。Wolfram技术栈是这番努力的一个关键部分。每个人都可能是这个故事的一部分。数据和工具就在那里你可以随时使用,重要的是保持你的探索和好奇的心。
原文链接:https://blog.wolfram.com/2020/10/16/investigating-the-ethereum-gold-bug-and-blockchain-in-the-wolfram-language/
Wolfram Mathematica:
https://www.wolfram.com/mathematica/trial/

Wolfram System Modeler:
https://www.wolfram.com/system-modeler/trial/

有关软件购买和使用的问题,欢迎联系:
info-china@wolfram.com


