译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
本项目的代码在这里
我最近加入了Edge&Node,担任开发者关系工程师,并一直在深入研究以太坊的智能合约开发。我已经确定了我认为用Solidity构建全栈dApps的最佳技术栈:
??客户端框架-React
??以太坊开发环境-Hardhat
??以太坊Web客户端库-Ethers
functiongreet()publicviewreturns(stringmemory){returngreeting;}functionsetGreeting(stringmemory_greeting)public{console
}
这是一个非常简单的智能合约,在部署时,设置了一个Greeting变量,并公开了一个返回问候语的函数(greet)。
它还有一个允许用户更新问候语的函数。当部署到以太坊区块链后,用户可以和这些方法交互。
我们对智能合约做一个小小的修改。由于我们在hardhat
//callthesmartcontract,readthecurrentgreetingvalueasyncfunctionfetchGreeting(){if(typeofwindow
exportdefaultApp;
启动React服务器,测试一下:
npmstart
当应用程序加载时,你应该能够获取当前的问候语并打印到控制台。也应该可以通过MetaMask钱包签名交易来进行更新问候语。
设置和获取问候值
部署和使用真实测试网络
有几个以太坊测试网络,如Ropsten、Rinkeby或Kovan,我们也可以部署到这些网络上,以使合约有一个可公开访问的版本,而不必将其部署到主网。在本教程中,我们将部署到Ropsten测试网络中。
首先,先更新你的MetaMask钱包,连接到Ropsten网络。
Ropsten网络
接下来,通过访问本测试水龙头,给自己发送一些测试以太,以便在本教程的后面使用。
我们可以通过注册类似Infura或Alchemy这样的服务来访问Ropsten(或其他任何测试网络),本教程我使用的是Infura。
一旦你在Infura或Alchemy中创建了应用程序,你会得到一个类似于这样的节点URL:
https://ropsten
functiontransfer(addressto,uintamount)external{require(balances>=amount,"Notenoughtokens");balances-=amount;balances=amount;}functionbalanceOf(addressaccount)externalviewreturns(uint){returnbalances;}}
请注意,该代币合约仅用于演示目的,不符合ERC20,关于ERC20代币的例子,请查看此合约
该合约将创建一个名为NaderDabitToken的新代币,并设置发行量为1000000。
接下来,编译这份合约。
npxhardhatcompile
更新scripts/deploy
main()
);
现在,我们可以将这个新的合约部署到本地或Ropsten网络。
npxrunscripts/deploy
asyncfunctionfetchGreeting(){if(typeofwindow
exportdefaultApp;
接下来,运行应用程序:
npmstart
点击获取余额,看到我们的账户里有100万币打印在控制台。
也可以通过点击添加代币(AddToken),以便在MetaMask中查看它们:
AddToken
接下来点击自定义代币(CustomToken),输入代币合约地址,然后添加代币。现在,你的钱包里应该有代币了。
显示代币
接下来,让我们试着把这些硬币发送到另一个地址。
结论
本教程涵盖了很多,希望你能学到很多东西。
如果你想在MetaMask之外支持多个钱包,请查看Web3Modal,它可以通过一个相当简单和可定制的配置,方便在你的应用程序中轻松实现对多个网络提供者的支持。
在我未来的教程和指南中,我会深入研究更复杂的智能合约开发,以及如何将其部署到Subgraph,使用GraphQLAPI,实现分页和全文搜索等功能。
本翻译由CellNetwork赞助支持。
来源:https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13
参考资料
登链翻译计划:https://github.com/lbc-team/Pioneer
翻译小组:https://learnblockchain.cn/people/412
Tiny熊:https://learnblockchain.cn/people/15
这里:https://github.com/dabit3/full-stack-ethereum
Edge&Node:https://twitter.com/edgeandnode
Hardhat:https://hardhat.org/
Ethers.js:https://docs.ethers.io/v5/
TheGraphProtocol:https://thegraph.com/
scaffold-eth:https://github.com/austintgriffith/scaffold-eth
Ganache:https://www.trufflesuite.com/ganache
Truffle:https://www.trufflesuite.com/
Truffle中文文档:https://learnblockchain.cn/docs/truffle/
ethers.js:https://docs.ethers.io/v5/
ethers.js中文文档:https://learnblockchain.cn/docs/ethers.js/
web3.js:https://web3js.readthedocs.io/en/v1.3.4/
web3.js中文文档:https://learnblockchain.cn/docs/web3.js/
Metamask:https://metamask.io/download.html
Next.js:https://nextjs.org/
Gatsby:https://www.gatsbyjs.com/
Redwood:https://redwoodjs.com/
Blitz.js:https://blitzjs.com/
MetaMask:https://metamask.io/
ethers.js:https://docs.ethers.io/v5/
hardhat:https://github.com/nomiclabs/hardhat
MetaMask配置问题:https://hardhat.org/metamask-issue.html
artifacts:https://hardhat.org/guides/compile-contracts.html#artifacts
ABI:https://learnblockchain.cn/docs/solidity/abi-spec.html
以太坊浏览器:https://etherscan.io/
友好可读ABI格式:https://blog.ricmoo.com/human-readable-contract-abis-in-ethers-js-141902f4d917
本测试水龙头:https://faucet.ropsten.be/
Infura:https://infura.io/dashboard/ethereum/cbdf7c5eee8b4e2b91e76b77ffd34533/settings
Alchemy:https://alchemyapi.io/?r=7d60e34c-b30a-4ffa-89d4-3c4efea4e14b
EtherscanRopstenTestnetExplorer:https://ropsten.etherscan.io/
ERC20:https://eips.ethereum.org/EIPS/eip-20
此合约:https://solidity-by-example.org/app/erc20/
Web3Modal:https://github.com/Web3Modal/web3modal
Subgraph:https://thegraph.com/docs/define-a-subgraph
CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
登链社区
现已在非小号资讯平台发布105篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/9870574.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
Bitfinex一周简报
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。