# Solana Web3.js 2.x 版本:函数式编程的新时代Solana Web3.js 库于今年11月推出了2.x版本,相较于1.x版本,新版本带来了重大变革。本文将概述其主要变化,为开发者未来的迁移工作做好准备。## 版本对比1.x版本虽然使用简单,但存在一些问题。它将所有功能集中在一个包中,导致即使开发者只使用少量功能,也需要下载整个库。这不仅增加了加载时间,还可能影响用户体验。2.x版本采取了模块化设计,将原有代码库拆分为多个小模块,如@solana/accounts、@solana/codecs等。同时,新版本放弃了基于类的实现,转而采用单个函数的方式。这种设计有助于JavaScript代码构建时的优化,未使用的代码将被删除,不会下载到用户设备上。据官方数据,使用新版本的DApp通常能实现30%的代码体积优化,某些情况下甚至更高。然而,新版本的模块化设计也对Solana团队的文档提出了更高要求。如何帮助开发者快速定位所需功能成为一个关键问题。目前,各模块的命名具有较好的语义性,这在一定程度上降低了开发者的迁移难度。值得注意的是,2.x版本实现了零依赖。考虑到近期发生在1.95.5和1.95.6版本上的供应链攻击,减少外部依赖无疑提高了库的安全性。## 重要变更点### 连接2.x版本采用了更加函数式的方法来处理连接。新版本通过配置RPC请求地址创建请求发送器,然后利用该发送器发起各种请求。### 密钥对公钥和私钥相关的处理也发生了重大变化。1.x版本中常用的Keypair和PublicKey类被一系列函数所取代。例如,现在可以使用await generateKeyPair()生成密钥对,而不是之前的Keypair.generate()。新方法返回Promise,这是由于它利用了JavaScript的Web Crypto API,使用了原生的Ed25519实现。### 发送交易2.x版本不再使用Transaction和VersionedTransaction类。System Program相关方法也被移除,需要从其他地方引入。例如,transfer指令现在需要调用@solana-program/system中的getTransferSolInstruction函数。新版本提供了函数式编程中常用的pipe形式。例如,可以通过pipe函数实现原本1.x版本的转账功能。值得注意的是,新方式更依赖WSS,这对RPC供应商的服务稳定性提出了更高要求。### React支持@solana/web3.js项目中还包含了@solana/react库,提供了一些React Hook,内置了诸如signIn等功能。## 总结Solana Web3.js 2.x版本的发布展现了Solana团队持续改进的决心。新版本为开发者提供了更高效、灵活、可定制的Solana网络交互方式,有望推动该平台的进一步发展和应用。
Solana Web3.js 2.x重大升级:模块化设计提升性能与安全性
Solana Web3.js 2.x 版本:函数式编程的新时代
Solana Web3.js 库于今年11月推出了2.x版本,相较于1.x版本,新版本带来了重大变革。本文将概述其主要变化,为开发者未来的迁移工作做好准备。
版本对比
1.x版本虽然使用简单,但存在一些问题。它将所有功能集中在一个包中,导致即使开发者只使用少量功能,也需要下载整个库。这不仅增加了加载时间,还可能影响用户体验。
2.x版本采取了模块化设计,将原有代码库拆分为多个小模块,如@solana/accounts、@solana/codecs等。同时,新版本放弃了基于类的实现,转而采用单个函数的方式。这种设计有助于JavaScript代码构建时的优化,未使用的代码将被删除,不会下载到用户设备上。据官方数据,使用新版本的DApp通常能实现30%的代码体积优化,某些情况下甚至更高。
然而,新版本的模块化设计也对Solana团队的文档提出了更高要求。如何帮助开发者快速定位所需功能成为一个关键问题。目前,各模块的命名具有较好的语义性,这在一定程度上降低了开发者的迁移难度。
值得注意的是,2.x版本实现了零依赖。考虑到近期发生在1.95.5和1.95.6版本上的供应链攻击,减少外部依赖无疑提高了库的安全性。
重要变更点
连接
2.x版本采用了更加函数式的方法来处理连接。新版本通过配置RPC请求地址创建请求发送器,然后利用该发送器发起各种请求。
密钥对
公钥和私钥相关的处理也发生了重大变化。1.x版本中常用的Keypair和PublicKey类被一系列函数所取代。例如,现在可以使用await generateKeyPair()生成密钥对,而不是之前的Keypair.generate()。新方法返回Promise,这是由于它利用了JavaScript的Web Crypto API,使用了原生的Ed25519实现。
发送交易
2.x版本不再使用Transaction和VersionedTransaction类。System Program相关方法也被移除,需要从其他地方引入。例如,transfer指令现在需要调用@solana-program/system中的getTransferSolInstruction函数。
新版本提供了函数式编程中常用的pipe形式。例如,可以通过pipe函数实现原本1.x版本的转账功能。值得注意的是,新方式更依赖WSS,这对RPC供应商的服务稳定性提出了更高要求。
React支持
@solana/web3.js项目中还包含了@solana/react库,提供了一些React Hook,内置了诸如signIn等功能。
总结
Solana Web3.js 2.x版本的发布展现了Solana团队持续改进的决心。新版本为开发者提供了更高效、灵活、可定制的Solana网络交互方式,有望推动该平台的进一步发展和应用。