以太坊Devcon大会精选!十大关键技术全解析,将彻底改变Web3?

时间:2024-12-01  分类:电子
Part3:DevTools

以太坊的开发生态持续进步,各种工具大幅提升了开发者的效率,无论是在测试网的模拟、智能合约的除错,还是区块链资料的索引,都有显著的创新。以下是几款值得关注的工具与解决方案。


TenderlyVirtualTestNet


TenderlyVirtualTestNet是一个强大的虚拟测试网工具,允许开发者fork主网,其特色是能与主网保持即时同步状态。同时它支援:



Simbolik


Simbolik是专为Solidity开发设计的除错工具,与VSCode无缝整合,只要在测试上方案下Debug就能执行。它的功能包括:



Simbolik为开发者提供了高效且细致的除错支持,帮助快速定位并解决合约中的问题。


TrustBytes


TrustBytes是一款将Solidity程式码转化为图像化呈现的工具,特别适合合约审计。它的核心功能包括:



TrustBytes通过缩短代码追踪的时间以提升审计效率,特别是在分析潜在攻击点方面。可参考其Demo网站。


EthereumIndexer


以太坊的资料结构让直接从JSONRPC获取资料效率低下,因此需要透过Indexer将资料提取并存储到高效的资料库中。以下是两个值得关注的解决方案。


IndexSupply的Shovel


Shovel是一款开源工具,允许开发者透过简单的config档,将链上资料转化为指定格式并储存到PostgreSQLDB。例如,纪录一个钱包的历史ERC20TokenTransfer可以这样设定:


{  name:erc20_transfers,  enabled:true,  sources:[{name:mainnet}],  table:{   name:erc20_transfers,   columns:[    {name:block_num,type:numeric},{name    :tx_hash,type    :bytea},{name:from,type:bytea},    {name:to,type:bytea},    {name:value,type:bytea},   ]  },  block:[   {name:block_num,column:block_num},   {name:tx_hash,column:tx_hash}  ],  event:{   name:Transfer,   type:event,   anonymous:false,   inputs:[    {indexed:true,name:from,type:address,column:from},    {indexed:true,name:to,type:address,column:to},    {name:value,type:uint256,column:value}   ]  } }


透过简单的配置,Shovel能快速完成资料的提取与存储,大幅降低开发成本。


RethExecutionExtension


RethExecutionExtension提供了一种新颖且高效的设计,针对链上资料索引与Re-org(链重组)处理,解决了传统方法中的诸多痛点。


过去,如果使用geth等节点软体来扩展功能,往往需要直接修改节点内的程式码,这样的做法相当于对节点进行了fork。一旦上游节点有更新,开发者还需要持续合并更新的程式码,这无疑增加了开发与维护的复杂性。


Reth的创新之处在于其设计为可直接作为libraryimport,开发者不需要fork或修改节点本身的程式码,就能灵活扩展节点功能。


核心特点与通知机制


Reth提供了清晰且灵活的通知介面,用于处理区块链的三种状态变化:



以下是范例程式码展示如何处理这些通知:


asyncfnexex<Node:FullNodeComponents>(mutctx:ExExContext<Node>)->eyre::Result<()>{  whileletSome(notification)=ctx.notifications.recv().await{    match¬ification{      ExExNotification::ChainCommitted{new}=>{        //dosomething      }      ExExNotification::ChainReorged{old,new}=>{        //dosomething      }      ExExNotification::ChainReverted{old}=>{        //dosomething      }    };  }  Ok(())}


Part4:Security


安全问题一直是区块链领域的核心挑战,从开发环境的设置,到设备与用户端的保护,再到DeFi合约层面的防御,都需要严密的措施来降低风险。以下针对开发、设备与DeFi安全三大主题进行探讨。


开发环境安全(DevSecurity)


在区块链应用的开发过程中,环境的安全性往往容易被忽视,但它可能成为骇客的突破口。


VSCode信任机制的潜在风险


当开发者在VSCode中开启一个恶意的Repo并点击「Yes,Itrusttheauthors」后,骇客可能利用.vscode资料夹内的设定执行任意脚本,包括:



这是因为.vscode中的Tasks可以设置触发特定条件的自动执行脚本(详见官方文档)。这种漏洞可能导致开发者的整个系统处于被骇客接管的风险中。


防范措施:使用Sandbox环境


为避免上述风险,开发者应在Sandbox环境中开启专案。具体来说,可以使用VSCode的DevContainer功能,在Docker容器中执行完整的开发环境。这样即使恶意代码执行,也只会影响隔离的容器,不会危及主机系统。


GithubActionSelfHostedRunner的风险


SelfHostedRunner是Github提供开发者自行建置CI环境所需机器的解决方案。然而如果在PublicRepo启用SelfHostedRunner会带来潜在威胁:



这一风险已被详述于Synacktiv的报告。建议避免在PublicRepo中使用SelfHostedRunner,或采用更严格的权限管理。


设备安全(DeviceSecurity)


Ledger的研究显示iOS和Android平台的SyncablePasskey实作并不像预期中那么安全。主要问题在于:



安全建议


为了降低使用Passkey带来的风险,建议采取以下措施:



这些建议可以有效降低Passkey在日常应用中的潜在风险,同时确保资产的安全性。


DeFi安全(DeFiSecurity)


区块链应用最核心的DeFi领域,因其高额资金流动性,成为骇客攻击的主要目标。防范这类风险需要智能合约与基础设施层面的共同努力。例如Forta提供了一种基于AI模型的链上防火墙,用于过滤潜在攻击交易。其运作机制如下: