WEEX 唯客博客, 作者:Mirror Tang | Salus;Yixin Ren | Hongshan capital;Lingzhi Shi | Salus;Jiangyue Wang | Salus 来源:Salus 过去一年随着generative AI一次次打破大众的预期,AI生产力革命的浪潮席卷加密货币圈层。我们看到,许多AI概念项目在二级市场上带来一波造富神话,同时,越来越多的开发者开始着手开发自己的“AI+Crypto”项目。 然而,仔细观察可以发现,这些项目的同质化现象非常严重,且大多数项目仅仅停留在改善“生产关系”的层面,例如通过去中心化网络来组织算力,或者创建“去中心化的Hugging Face”等。 很少有项目尝试从底层技术进行真正的融合和创新。我们认为,这种现象的原因在于AI和区块链领域之间存在一种“领域偏见”。尽管两者的交集广泛,但很少有人能够深入理解这两个领域。例如,AI开发者很难了解以太坊的技术实现和历史基建状态,也就更难提出深入的优化方案。 以机器学习(ML)这一最基本的AI分支为例,它是一种无需明确编程指令,机器便能通过数据做出决策的技术。机器学习在数据分析和模式识别方面展现出巨大潜力,且在web2中已飞入寻常。然而由于诞生之初的时代局限,即使是在区块链技术创新的前沿阵地如以太坊,其架构、网络和治理机制也尚未将机器学习作为解决复杂问题的有效工具。 “伟大的创新往往诞生于交叉领域。” 我们撰写本文的初衷是为了让AI开发者更好地理解区块链世界,同时也为以太坊社区的开发者提供新的思路。在文章中,我们首先介绍了以太坊的技术实现,随后提出将机器学习这一基础AI算法应用于以太坊网络的方案以提高其安全性、效率和可扩展性。我们希望以这个案例为起点,抛出一些和市场上不一样的角度,激发开发者生态中更多 “AI+Blockchain”的创新交叉组合。 以太坊的技术实现 基础数据结构 区块链本质是一条连接区块的链,用于区分链的关键就是链配置,这也是一条区块链在创世中所必不可少的一部分。对于以太坊,链配置用于区分以太坊中不同链,同时标识出其中的一些重要升级协议以及标志事件。例如DAOForkBlock标志了以太坊经历DAO攻击的硬分叉高度,以及ConstantinopleBlock标识了君士坦丁堡升级的区块高度。对于包含众多改进提案的较大升级,会设置特别的字段以标识对应的区块高度,此外以太坊包含各种测试网络以及主网络,通过ChainID独一无二地标识了对应的网络生态。 创世区块作为整个区块链的第零个区块,其他区块直接或间接引用到创世区块。 因此节点启动之初必须载入正确的创世区块信息,且不得任意修改。创世区块的配置信息包含了前述的链配置,同时还附加了例如相关挖矿奖励、时间戳、难度和gas设限等字段,需要注意以太坊的共识机制已经从工作量证明的挖矿机制转为权益证明。 以太坊账户分为外部账户和合约账户,其中外部账户由私钥唯一控制,而合约账户无私钥控制,只能通过外部账户调用合约执行合约代码来操作。他们都包含一个唯一地址。以太坊世界态是一个以太坊账户树,每个都账户对应一个叶子结点,其中存储了该账户的状态(各种账户信息及代码信息)。 交易:以太坊作为一种去中心化平台,其本质是为了交易和合约,以太坊的区块就是打包的交易,以及附加一些其他相关信息,具体区块分为两部分,即区块头和区块体,其中区块头数据蕴含了将所有区块连接为链的证据,我们可以理解为前区块哈希,以及证明整个以太坊世界状态的状态根,交易根,回执(receipt)根,和其他若干标识难度,计数nonce等额外数据。而区块体存储了交易列表和叔块头的列表(由于以太坊已经转为权益证明,因此叔块引用不复存在)。 交易回执提供了交易执行后的结果和额外信息,这些是不能仅仅通过查看交易本身来直接获得的。具体来讲,其中包含的信息可以分为:共识内容,交易信息和区块信息,包含了交易处理是否成功以及交易日志和gas等消耗的信息。通过分析回执中的信息来调试智能合约代码和优化 gas消耗。并提供了一种确证,表明交易已经被网络处理,并且可以查看交易的结果和影响。 在以太坊中,gas费用可以简单的理解为手续费,当你发送Token、执行合约、转移以太币或者 在此区块上所出的各种操作,这些交易中的操作都需要gas费,以太坊计算机在处理这笔交易时需要进行计算消耗网络资源,这样你必须支付gas费才能让计算机为你工作。最终燃料费作为手续费支付给矿工,其具体费用的计算公式可理解为Fee = Gas Used * Gas Price,也就是实际消耗乘以消耗单价,其中单价由交易的发起者自行设置,其多少往往决定了交易上链的快慢。如果设置过低有可能交易不会被执行,同时还需要设置费用的gas limit消耗上限,避免出现合约中的错误引起不可预计的gas消耗的情况。 交易池 在以太坊中,存在大量的交易,相比于中心化系统,去中心化系统的每秒处理交易数显然黯然神伤。由于大量的交易进入结点,结点需要维护一个交易池以正确的管理这些交易。交易的广播是通过p2p进行的,具体来讲一个节点会将可执行交易广播到其邻结点中,继而邻结点又会将该交易广播到该节点的邻节点中,通过这样的形式,一笔交易可以在6秒内扩散至整个以太坊网络。 在交易池中的交易分为可执行交易和非可执行交易,可执行交易具有更高的优先级会被执行并打包的区块中,而所有刚进入交易池的交易都是非可执行交易,之后才会变为可执行。可执行交易和非可执行交易分别记录在pending容器中和 queue 容器中。 此外交易池还会维护一个local交易列表,local交易具备多种优势,其优先级更高,不受交易量限制的影响,且在重启结点时可以立刻重新加载到交易池中。而local交易的本地持久化存储就是通过journal来实现的(重启节点时的重新加载),其目的就是为了不丢失未完成的本地交易,并会定期更新。 交易在入队列之前会检验交易合法性,具体包括各种类型的检查,例如:防DOS攻击、防负数交易、交易gas上限等等。交易池简单组成可以分为:queue+pending(两个组成all交易),在完成合法性检测之后会进行后续的检查,包括检查交易队列是否达到上限,之后判断remote交易( remote交易就是非local交易)是否是交易池中最低的,替换交易池中最低价格交易。对于可执行交易的替换,默认只有上调10%手续费的交易才允许替换掉已在等待执行的交易,替换后存储为非可执行交易。此外在交易池的维护过程中还会删除无效和超上限交易,并对满足条件的交易进行替换。 共识机制 以太坊前期的共识理论还是基于难度值哈希计算的方法,也就是说,需要计算区块的哈希值,以满足目标难度值的条件,该区块才合法。由于以太坊现在的共识算法已经从POW转为POS,因此对于挖矿相关的理论不再赘述。在这里简述POS算法。以太坊于2022年9月完成了信标链的合并实现了POS算法,具体来讲,基于POS的以太坊,其每个区块的出块时间稳定在12s,用户质押自己的以太币以获得成为验证者的权利,之后对参与质押的用户随机进行选择得到一批验证者,并在每一轮周期包含32个插槽的每一个插槽中会进行验证者的选拔,选出其一验证者作为提议者,该提议者实现出块,而对应该插槽的其余验证者作为委员会,以验证提议者区块的合法性,同时对上一轮周期中的区块合法性做出判决。POS算法显著稳定并提高了区块的出块速度,同时极大地避免了计算资源的浪费。 签名算法 以太坊沿袭了比特币的签名算法标准,同样采用secp256k1曲线,其具体的签名算法采用了 ECDSA,也就是说计算的签名是根据原始消息的哈希计算得来的,整个签名的组成简单来看就是R+S+V。每次计算都会对应地引入随机数,其中R+S就是ECDSA的原始输出。而末尾字段V称之为恢复字段,表示从内容和签名中成功恢复出公钥时需要查找的次数,因为根据R值在椭圆曲线中查找符合要求的坐标点可能有多个。 整个过程可以简单梳理为:交易数据与签名器相关信息经RLP编码后哈希,与私钥通过ECDSA签名就可以获得最终签名,而ECDSA中所使用的曲线就是secp256k1椭圆曲线。最后将签名数据与交易数据组合,就可以获得一笔已经签名的交易数据并广播出去。 以太坊的数据结构不仅仅依赖于传统的区块链技术,还引入了默克尔帕特里夏树,也称为默克尔压缩前缀树,用于高效地存储和验证大量数据。MPT结合了默克尔树的加密哈希功能和帕特里夏树的键路径压缩特性,提供了一种既保障数据完整性又支持快速查找的解决方案。 默克尔压缩前缀树 在以太坊中,MPT用于存储所有状态和交易数据,确保任何数据的变更都会反映在树的根哈希上。这意味着,通过验证根哈希,就可以证明数据的完整性和准确性,无需检查整个数据库。 MPT由四种类型的节点组成:叶子节点、扩展节点、分支节点和空节点,这些节点共同构成了一棵能够适应动态数据变化的树。每次数据更新时,MPT通过节点的添加、删除或修改来反映这些变更,同时更新树的根哈希值。由于每个节点都通过哈希函数加密,任何对数据的微小改动都会导致根哈希的巨大变化,从而保证了数据的安全性和一致性。此外,MPT的设计支持“轻客户端”验证,允许节点仅通过存储树的根哈希和必要的路径节点,就能验证特定信息的存在或状态,极大地减少了数据存储和处理的需求。 通过MPT,以太坊不仅实现了数据的高效管理和快速访问,还确保了网络的安全性和去中心化特性,支撑起整个以太坊网络的运行和发展。 状态机 以太坊的核心架构融合了状态机的概念,其中,以太坊虚拟机EVM是执行所有智能合约代码的运行时环境,而以太坊本身可视为一个全球共享的、状态转换系统。每个区块的执行都可以被看作是一个状态转换过程,从一个全球共享状态转移到另一个状态。这种设计不仅确保了以太坊网络的一致性和去中心化特性,还使得智能合约的执行结果可预测且不可篡改。 在以太坊中,状态指的是所有账户的当前信息,包括每个账户的余额、存储数据以及智能合约的代码。每当发生交易时,EVM根据交易内容计算并转换状态,这一过程通过MPT来高效、安全地记录。每个状态转换不仅改变了账户数据,也导致了MPT的更新,反映在树的根哈希值的变化上。 EVM和MPT之间的关系至关重要,因为MPT为以太坊的状态转换提供了数据完整性的保证。当 EVM执行交易,更改账户状态时,相关的MPT节点被更新以反映这些变更。由于MPT的每个节点都是通过哈希链接的,任何对状态的修改都会引起根哈希的变化,这个新的根哈希随后被包含在新的区块中,确保了整个以太坊状态的一致性和安全性。下面我们介绍一下EVM虚拟机。 EVM EVM虚拟机是整个以太坊构建智能合约执行状态转换的根本,正是得益于EVM,以太坊才能在真正意义上被想象成一个世界计算机。EVM虚拟机是图灵完备的,这也就意味着以太坊上的智能合约能够执行任意复杂逻辑计算,而gas机制的引入又成功防止合约中无限循环的情况,确保网络的稳定性和安全性。从更加深入一些的技术层面讲,EVM是一个基于堆栈的虚拟机,使用以太坊专用的字节码执行智能合约。开发者通常使用高级语言,如Solidity,来编写智能合约,然后将其编译成EVM可以理解的字节码,供EVM进行执行调用。EVM是以太坊区块链创新能力的关键,它不仅支撑着智能合约的运行,也为去中心化应用的开发提供了坚实的基础。通过EVM,以太坊正塑造着一个去中心化、安全且开放的数字未来。 以太坊历史回顾 图1 以太坊历史回顾 以太坊面临的挑战安全性 智能合约是运行在以太坊区块链上的计算机程序。它们允许开发者创建和发布各种应用,包括但不限于借贷应用、去中心化交易所、保险、二次融资、社交网络和NFT。智能合约的安全性对于这些应用至关重要。这些应用直接负责处理和控制加密货币,智能合约的任何漏洞或者对其的恶意攻击,都会对资金安全构成直接威胁,甚至导致巨大的经济损失。比如,2024年2月26日,DeFi借贷协议Blueberry Protocol因智能合约逻辑缺陷遭到攻击,损失约1,400,000美元。 智能合约的漏洞是多方面的,涵盖了不合理的业务逻辑(Business Logic)、访问权限控制不当、数据验证不足、重入攻击,以及DOS(Denial of Service)攻击等多个方面。这些漏洞可能会导致合约的执行出现问题,影响到智能合约的有效运行。以DOS攻击为例,这种攻击方式是通过攻击者发送大量交易来消耗网络的资源,那么,正常用户发起的交易无法得到及时处理,这会导致用户体验下降。而且,这也会导致交易gas费上涨。因为在网络资源紧张的情况下,用户可能需要支付更高的费用来让他们的交易得到优先处理。 除此之外,以太坊上的用户也面临着投资风险,资金安全会收到威胁。比如,垃圾币,用于描述被认为几乎没有价值或没有长期增长潜力的加密货币。垃圾币经常被利用作为诈骗工具或是用于价格操控的拉升和抛售策略。垃圾币的投资风险很高,可能导致重大财务损失。由于其低价和低市值,它们极易受到操纵和波动。这种币种常被用于拉高抛售计划和蜜罐骗局,即利用虚假项目诱骗投资者并窃取其资金。另一种常见的垃圾币风险是Rug Pull,即创造者从项目中突然移除所有流动性,使代币价值暴跌。这些骗局通常会通过虚假的合作伙伴关系和背书来进行营销,一旦代币价格上涨,骗子就会出售他们的代币,获利后消失,留给投资者的却是一文不值的代 币。同时,投资垃圾币还会分散人们对拥有实际应用和增长潜力的合法加密货币的注意力和资源。除了垃圾币,空气币和传销币也是快速获利的方式。对于缺乏专业知识和经验的用户来说,将它们与合法的加密货币进行区分尤为困难。 效率 评估以太坊效率的两个非常直接的指标是交易速度和gas费。交易速度是指以太坊网络能够在单位时间内处理的交易数量。这个指标直接反映了以太坊网络的处理能力,速度越快意味着效率越高。以太坊中的每一笔交易都需要支付一定的gas费用,用于补偿进行交易验证的矿工。 gas费用越低,说明以太坊的效率越高。 交易速度降低会导致gas费用升高。一般来说,当交易处理速度降低时,由于区块空间有限,竞争进入下一个区块的交易可能会增多。为了在竞争中脱颖而出,交易者通常会提高gas费用,因为矿工在验证交易时往往优先选择Gas费用较高的交易。那么,更高的gas费会降低用户体验 感。 交易仅仅是以太坊中的基础活动。在该生态系统中,用户还可以进行各项借贷、质押、投资、保险等活动。这些都可以通过特定的DApp来完成。然而,鉴于DApp的种类繁多,并且缺乏与传统行业相似的个性化推荐服务,用户在选择适合自己的应用和产品时会感到迷茫。这种情况会导致用户满意度下降,从而影响到整个以太坊生态系统的效率。 以借贷为例。一些DeFi借贷平台为了维护自己平台的安全和稳定,会使用超额抵押机制。这意味着借款人需要拿出更多的资产作为抵押,这些资产在借款期间不能被借款人用于其他活动。这会导致借款人的资金利用率下降,进而降低市场流动性。 机器学习在以太坊中的应用 机器学习模型,如RMF模型、生成式对抗网络(GAN)、决策树模型、K近邻算法(KNN)、 DBSCAN聚类算法等,正在以太坊中发挥重要作用。这些机器学习模型在以太坊中的应用可以帮助优化交易处理效率,提高智能合约的安全性,实现用户分层以提供更个性化服务,并且有助于维护网络的稳定运行。 算法介绍 机器学习算法是一组指令或规则,用于解析数据、学习数据中的模式,并基于这些学习做出预测或决策。它们通过从提供的数据中自动学习和改进,而不需要人类明确编程指令。机器学习模型,如RMF模型、生成式对抗网络(GAN)、决策树模型、K近邻算法(KNN)、DBSCAN聚类算法等,正在以太坊中发挥重要作用。这些机器学习模型在以太坊中的应用可以帮助优化交易处理效率,提高智能合约的安全性,实现用户分层以提供更个性化服务,并且有助于维护网络的稳定运行。 贝叶斯分类器 贝叶斯分类器是在各种统计分类方法中,以最小化分类错误概率或在特定代价框架下最小化平均风险为目标的一种高效分类器。它的设计哲学深植于贝叶斯定理之中,这使得它能够在已知某些特征的条件下对象属于某一类的概率,通过计算对象的后验概率,来进行决策。具体来说,贝叶斯分类器首先考虑对象的先验概率,然后应用贝叶斯公式综合考虑观测数据,从而更新对对象分类的信念。在所有可能的分类中,贝叶斯分类器选择那个具有最大后验概率的类别,将对象归入此类。这种方法的核心优势在于其能够自然地处理不确定性和不完全信息,使其成为一种强大且灵活的工具,适用于广泛的应用场景。 图2 贝叶斯分类器 如图2所示,在有监督的机器学习中,就是利用数据和基于贝叶斯定理的概率模型来进行分类决策。利用似然度和类别以及特征的先验概率,贝叶斯分类器通过计算数据点属于各个类别的后验概率,并将数据点分配到后验概率最大的类别中去。在右侧散点图中,分类器将尝试找到一条曲线,最好地将不同颜色的点分开,从而最小化分类错误。 决策树 决策树算法常用于分类和回归任务中,其采用了一种分层判断的思想,根据已知的数据通过选取信息增益率较大特征后分裂成树,训练出决策树。简单来说,整个算法可以根据数据从中自学习出一种决策规则从而判断变量的值,具体在实现上,能够将复杂决策过程分解为若干个简单的子决策过程,通过这样一种衍生方式,每个更为简单的决策判断都派生自父决策准则,从而组成了一种树状结构。 从图3可以看出,每个结点都代表了一项决策,定了某种属性的判断准则,而分支代表决策的结果。每个叶子结点代表了最终的预测的结果和类别。从算法构成上来看,决策树模型较为直观,且易于理解具备较强的解释性。 DBSCAN算法 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是具有噪声的基于密度的空间聚类算法,对于非联通数据集好像效果尤其的好。该算法能够发现任意形状的簇,且无需事先指定簇的数量,对于数据集中的异常值具有良好的鲁棒性。该算法还能在有噪声的数据集中有效地识别出异常点,噪声或异常点被定义为在低密度区域的点,如图4所示。 KNN算法 KNN(K-Nearest Neighbors)算法既可用于分类也可用于回归。在分类问题中,会根据投票机制来决定待分类项的类别;而在回归问题中,则会计算k个最邻近样本的平均值或者加权平均值来预测。 如图5所示,KNN算法在分类中的工作原理是找到一个新数据点的最近的K个邻居,然后根据这些邻居的类别来预测新数据点的类别。如果K=1,那么新的数据点就被简单地分配到它最近的 邻居的类别。如果K>1,那么通常会用投票法来确定新的数据点的类别,也就是说,新的数据点会被分配到最多邻居属于的类别。而当KNN算法用于回归问题时,其基本思想是一样的,而结果是最近邻的K个样本输出值的平均值。 生成式人工智能 生成式人工智能是一种根据需求输入能够生成新的内容(如文本、图像、音乐等)的AI技术。它的背景基于机器学习和深度学习的进展,特别是在自然语言处理和图像识别等领域的应用。生成式AI通过从大量数据中学习模式和关联,然后根据这些学习到的信息生成全新的的输出内 容。生成式人工智能的关键在于模型训练,需要优秀的数据进行学习与训练,这一过程中,模型通过分析和理解数据集中的结构、模式和关系,逐…