掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp

这篇具有很好参考价值的文章主要介绍了掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

前面的文章传送🚪:hardhat入门 与 hardhat进阶

在之前的文章中,我们已经探讨了使用Hardhat框架来开发以太坊智能合约的方法。本文将介绍另一个强大的工具——Scaffold-eth,它更加注重全栈式的开发体验,提供了一个集成了Hardhat、React和其他工具的开发环境。帮助我们更轻松地构建完整的以太坊去中心化应用(DApp)

掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth

一、Scaffold-eth是什么?

官网点击此处
doc文档指南点击此处
Scaffold-eth是一个基于以太坊的开发框架,旨在简化以太坊智能合约和前端应用程序的开发过程。它提供了一个集成了Hardhat、React和其他工具的开发环境,帮助开发者更轻松地构建以太坊去中心化应用(DApp)。

具体来说,Scaffold-eth的特点包括:

  • 全栈式开发环境:Scaffold-eth提供了一个完整的开发环境,包括智能合约的编写、部署和交互,以及前端应用程序的开发和测试。

  • 集成了HardhatReact:Hardhat是一个强大的以太坊智能合约开发框架,而React是一个流行的前端框架。Scaffold-eth将它们集成在一起,使得智能合约和前端应用程序之间的交互变得更加简单。

  • 自动化工具:Scaffold-eth提供了许多自动化工具,如自动部署合约、自动连接以太坊网络等,帮助开发者提高开发效率。

  • 示例项目和模板:Scaffold-eth提供了许多示例项目和模板,包括简单的交易应用、去中心化交易所(DEX)等,帮助开发者快速上手并快速构建原型。

总的来说,Scaffold-eth是一个强大而灵活的工具,适用于初学者和资深开发者,帮助他们更轻松地构建以太坊DApp,并加速区块链应用的开发过程。

二、安装和配置

1.准备工作

在开始之前,您需要确保电脑已安装以下工具:
Node (>= v18.17) 节点 (>= v18.17)
Yarn (v1)or Yarn (v2+)PS:这里推荐安装v2+版本
Git

安装完成后可以输入下面命令查看是否安装成功

node --version
yarn --version
git --version

掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth

2.安装

在github上下载scaffold-eth,并且下载所需依赖

git clone https://github.com/scaffold-eth/scaffold-eth-2.git
cd scaffold-eth-2
yarn install

掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth

3.配置开发环境

初始化本地区块链
在新开的一个终端里输入yarn chain,这条链与我前面讲的hardhat入门里的链是一样的,都可以连到MetaMask钱包
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth
部署智能合约
刚才的终端不要关闭,再开第二个终端输入yarn deploy
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth
启动NextJS
前面的两个都不要关掉,再开第三个终端输入yarn start

掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth
启动项目
打开浏览器输入http://localhost:3000/就可以进到项目主页面
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth

三、进阶使用

1.放入自己的合约

上面我们安装完成后就可以把自己的一个合约放到里面去,我们在项目的packages/hardhat/contracts/目录下放入EthVoting.sol文件,再到packages/hardhat/deploy/目录下创建一个01_deploy_ethvoting.ts文件,把前面00的文件复制改一下即可,如下图所示:
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth

EthVoting.sol

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

contract EthVoting {

    //附议人信息
    struct Voter {
        uint voteTimeStamp; //投票时的区块时间
        bool initialized;   //判断是否投过票的标志
    }

    //提案内容
    struct  Proposal {
        string pName;        //提案标题
        string pCtx;         //提案内容
        address chairperson; //提案主持人
        uint voteCount;      //附议人数
        bool initialized;    //判断提案是否存在的标志
        uint limitTime;      //附议限制时间
        mapping(address => Voter) voters; //附议列表
    }




    //所有提案列表
    mapping(uint => Proposal) public proposals;

    //附议事件
    event VoteEvt(string indexed eventType, address _voter, uint timestamp);

    //提案事件
    event ProposeEvt(string indexed eventType, uint _proposalId, uint _limitTime);

    //创建新提案
    function createProposal(uint _pid,string  memory _pName, string memory  _pCtx, uint _limitTime) public returns (uint){

        uint pId = _pid;
        Proposal storage _proposal = proposals[pId];
        _proposal.pName = _pName;
        _proposal.pCtx = _pCtx;
        _proposal.chairperson = msg.sender;
        _proposal.initialized = true;
        _proposal.limitTime= _limitTime;
        _proposal.voteCount = 0;

        emit ProposeEvt("propose", pId, _limitTime);

        return pId;


    }

    //进行附议
    function doVoting(uint pId) public {
        //提案是否存在
        if (proposals[pId].initialized == false)
            revert("proposal not exist");

        uint currentTime = block.timestamp;

        //是否已超过提案时限
        if (proposals[pId].limitTime < currentTime)
            revert("exceed voting time");

        //是否已经投过票
        if (proposals[pId].voters[msg.sender].initialized == true)
            revert("already vote");

        //新投票信息
        Voter memory voter = Voter({
            voteTimeStamp: block.timestamp,
            initialized: true
        });

        //记录投票信息
        proposals[pId].voters[msg.sender] = voter;
        proposals[pId].voteCount+=1;

        emit VoteEvt("vote", msg.sender, block.timestamp);
    }

    //查询是否附议
    function queryVoting(uint pId, address voterAddr) public view returns (uint){
        //提案是否存在
        if (proposals[pId].initialized == false)
            revert("proposal not exist");

        //返回投票时间
        return proposals[pId].voters[voterAddr].voteTimeStamp;
    }

    //获取区块链时间
    function getBlockTime() public view returns (uint t) {
        t = block.timestamp;
    }

    //查询提案标题
    function getProposalName(uint pId) public view returns (string memory s) {
        s = proposals[pId].pName;
    }

    //查询提案内容
    function getProposalCtx(uint pId) public view returns (string memory s) {
        s = proposals[pId].pCtx;
    }

    //查询提案内容
    function getProposalVCnt(uint pId) public view returns (uint v) {
        v = proposals[pId].voteCount;
    }

    //查询提案期限
    function getProposalLimit(uint pId) public view returns (uint t) {
        t = proposals[pId].limitTime;
    }
}

2.部署运行

保证区块本地链与NextJS两个端口的启动,然后再次打开一个端口输入yarn deploy,再次打开http://localhost:3000/debug界面,可以发现多了一个合约,并且自动对应到了合约里的读(read)和写(write)的方法
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp,区块链学习笔记,区块链,智能合约,web3,DAPP,Scaffold-eth


总结

通过使用Scaffold-eth,你可以快速搭建一个完整的以太坊开发环境,并进行智能合约的开发、部署和交互。它让你不用为前端调用而烦恼,会自动生成读和写的方法,让开发者更加专注与智能合约逻辑的编写,提供了一套完整的工具和模板,帮助你更轻松地构建以太坊应用程序。祝你在使用Scaffold-eth时取得成功!
希望本文能够帮助读者更好地了解Scaffold-eth,如果有任何疑问或者建议,欢迎留言讨论🌹文章来源地址https://www.toymoban.com/news/detail-853890.html

到了这里,关于掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

    13.0 ETH-美链 事件 2018年4月发生的事件,美链是发行在以太坊上的代币,这些代币没有自己的区块链,而是以智能合约的形式运行在以太坊的EVM平台上。发行这个代币的智能合约,对应的是以太坊状态树的一个节点,这个节点有它自己的账户余额,就相当于这个智能合约一共有

    2023年04月27日
    浏览(43)
  • 好用的区块链API SDK(TRON/ETH)

    2024年02月11日
    浏览(50)
  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 7.0 ETH挖矿算法篇2

    7.0 ETH挖矿算法篇2 7.1 伪代码理解以太坊挖矿算法 mkcache:根据一个seed,填充整个cache数组。 calc_dataset_item:通过cache来生成大数据集中的第i个元素,基本思想是通过伪随机的顺序读取cache中的256个数,每次读取的位置是由上一个读取的数计算得到的。第一个要从cache读取的数据

    2024年02月01日
    浏览(42)
  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 8.0 ETH挖矿难度的调整

    8.0 ETH挖矿难度的调整 比特币是每隔2016个区块来调整挖矿的难度,目标是维持出块时间平均在10分钟左右,以太坊是每个区块都有可能调整挖矿难度,调整的方法也比较复杂,而且还改过好几个版本,包括以太坊的黄皮书和实际代码也有一些出入,我们这部分以代码为准。

    2023年04月08日
    浏览(65)
  • 开发者笑疯了! LLaMa惊天泄露引爆ChatGPT平替狂潮,开源LLM领域变天

    来源: 新智源  微信号:AI-era Meta的LLaMA模型开源,让文本大模型迎来了Stable Diffustion时刻。谁都没想 谁能想到,一次意外的LLaMA泄漏,竟点燃了开源LLM领域最大的创新火花。 一系列表现出色的ChatGPT开源替代品——「羊驼家族」,随后眼花缭乱地登场。 开源和基于 API 的分发之

    2024年02月10日
    浏览(79)
  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 12.0 反思

    12.0 反思 1、智能合约的反思——智能合约真的智能吗?(Is smart contract really smart?) 首先我们必须了解智能合约里面并没有用到任何人工智能的技术,所以有人认为应该把它叫做自动合约,按照事先写好的代码,自动执行某些操作,现实世界当中,有什么自动合约的例子吗?A

    2024年02月06日
    浏览(43)
  • 区块链钱包“BTC,TRX,ETH”地址生成、助记词导入、keyStron文件生成等功能

    #最近闲着没事做,然后看听到说什么BTC疯涨,这类的小道消息。          哦豁~,这一下就让我觉得非常好奇,说,他们这些东西是怎样在链上存在的呢,然后他们那个一串串的地址又是啥,imtoken钱包又是怎么实现的呢。         根据以上疑问,我自己去研究,自己

    2024年04月14日
    浏览(49)
  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 11.0 The DAO 事件

    11.0 The DAO 事件 以太坊实现了去中心化的合约,有人想既然去中心化这么好,为什么不把所有的东西都改成去中心化呢?有人提出口号:decentralized everthing。DAO(Decentralized Autonomous Organization)去中心化的自治组织就是在这个背景下诞生的。传统社会下,组织都是建立在某种法律文

    2024年02月11日
    浏览(40)
  • 【联邦学习论文阅读】常用算法理解(SCAFFOLD、FedPD、FedBN)-目前仅SCAFFOLD

    SCAFFOLD(ICML-2020):SCAFFOLD: Stochastic Controlled Averaging for Federated Learning FedPD:https://arxiv.org/abs/2005.11418 FedBN(ICLR 2021):FEDBN: FEDERATED LEARNING ON NON-IID FEATURES VIA LOCAL BATCH NORMALIZATION 1… 梯度 实际上是对用户数据进行函数变换,在训练数据时携带信息,可能有泄露梯度隐私的风险。

    2023年04月20日
    浏览(46)
  • NFT系统开发架构设计,NFT系统源码对接ETH全球公链

    NFT(非同质化代币)是近年来区块链技术的一大热门应用,因其能够保证数字资产的独特性和不可复制性而备受青睐。本文将介绍如何设计一个基于区块链的NFT系统,并提供一个简单的代码demo,帮助读者更好地理解NFT系统的运作原理。 NFT的定义 NFT(Non-Fungible Token)是一种非

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包