Web3的程序员——无论你是从哪一个软件**【181公链2591合约開发3365微电】领域转型而来——从Solidity入手学习DApp**。
在智能合约的编码方面,我们目前有许多工具,但认识和理解Solidity非常有必要,大量的已经存在的,和流行的合约都使用它进行编码,因此,学习Solidity不但有助于帮助你理解区块-链**的基本知识和概念,还能让你在许多**的**者已有的卓越工程上快速起步。
就编程语言而言,在目前的EVM兼容链上,你可以使用Solidity或Vyper进行**,在其他L1s区块-链上,例如Solana,你可以使用Rust来进行合约的**;在Layer2方案StarkNet中,你可以使用Cairo来进行**;在Arweave储存网络中,也存在着类似3em这样的运行环境支持你使用Javascript来编写合约。
在这些百花齐放的方案中,实际上存在着两种不同的合约运行环境,EVM或非EVM方案,前者的代码都会被编译成EVM bytecode,而后者则会采用各种各样的runtime,各显神通。
提币数量需要包含精度,提币nonce值需要唯一,nonce步长值为2
理解并掌握智能合约后,我们可以进入 DApp 的编码,这是许多互联网行业从业者的强项,我不会在此赘述关于前端编码的经验,如上所述,我们可以使用流行的前端框架,例如 React 或者 Vue 来进行 DApp 的编码。毫无疑问,你会需要一些前端的技术栈知识,主要是 Javascript 与 CSS。
在此,我想向大家推荐一些**的前端库,使用这些代码库来进行合约交互,会使我们的**效率事半功倍。
以 React 为例,我们可以使用 wagmi 来帮助我们更好的操作合约,它集成了大量基础但够用的 hooks,并提供了与外部 Provider/Signer 交互的快捷函数。与此同时,wgami 没有过多的外部依赖,它的核心依赖只有 ethers.js。
如果你不是一个框架爱好者,想要从零开始构建应用程序,不可避免的,你需要使用 ethers.js 或者 web3.js 来进行基本操作。从我自己的使用经验来看,我更推荐 ethers.js。
一般来说,我们并不需要其他的库为我们提供专门的 Provider/Signer 支持,如果你打算支持更多复杂的 Provider,或者同时支持多网络 Provider/Signer 的读写功能,类似 Apeboard 为它的用户提供跨***的数据展现,可以参考 react-web3 或者 w3modal 两个流行的模块,这些模块提供了一些好用的功能,但他们的设计不够解耦,有时会带来不必要的 bug,对此,我保持谨慎推荐。