记录学习pet-shop的一些坑

记录学习pet-shop的一些坑,第1张

pet-shop是一个比较好的小项目用来熟悉truffle以及以太坊开发流程。
首先最大的坑肯定是环境的问题,我的配置:

Truffle v5.3.4 (core: 5.3.4)
Solidity v0.5.16 (solc-js)
Node v14.17.0
Web3.js v1.3.5
ganache-cli@6.12.2 
ubuntu16.04

如果有很多小伙伴出现问题实在解决不了,可以考虑换一下环境

npm uninstall truffle 
npm intsall -g truffle@5.3.4//-g是全局安装,不需要配置环境
首先说一下具体的流程

1.安装truffle和ganache-cli
2.创建文件目录
3.进入之后truffle unbox pet-shop,这时候就有了文件目录和架构以及基本配置文件
4.进入contracts目录下创建和编写智能合约
5.进行合约编译truffle compile,编译完成后会生成build/contracts文件
6.启动ganache-cli
7.在migrate目录下创建部署脚本
8.进行合约部署truffle migrate//这里部署都是在ganache搭建的测试链上,所以区块链必须连接成功才可以继续运行
9.智能合约测试,写合约
10.进行测试truffle test
11.编写js与前端页面进行交互

初始化web3初始化合约获取领养的宠物并更新界面处理adopt()方法

12.配置matemask
13.启动页面npm run dev
14.进行交互

错误集锦及解决方案 1.编写合约时,getAdopters()时需要返回值,教程写的是address[16],solidity版本升级之后,需要标注存储的位置,所以需要在后面加上memory,不需要再使用storage存到链上2.编写测试合约时,address expected =this;会报错,不可以隐式地转变为地址类型,所以需要进行强转address expected =address(this);3.前端页面不显示图片,这是因为index.html调用的jquery链接加载不出来,替换源
原来的:<script  src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
新的:<script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
4.连不上metamask,这个是最难受的,一直提示invalid address,调试了半天,出在了js那里,要获取账户地址var account =accounts[0],但是往控制台上输出结果是undefined,所以根本没有获取到账户,检查了之后发现Ganache没有问题,所以尝试了直接将地址传进去,但是发现不能识别,说是必须是以太坊类型的地址。之后,网页提示说是可能currentProvider不再支持,所以想到应该是js初始化web3出来问题,所以换了一个写法。
initWeb3: async function() {
      /*
       * Replace me...
       */
      if(window.ethereum){
          App.web3Provider =window.ethereum;
         try{

            await window.ethereum.enable();
         }catch(error){
             console.error("User dennied account access")
         }
      }
      else if (window.web3){
          App.web3Provider =window.web3.currentProvider;
      }
      else{
          App.web3Provider=new Web3.providers.HttpProvider('http://127.0.0.1:8545');
      }
      web3= new Web3(App.web3Provider);
      return App.initContract();
    },

新的调用方法。终于成功了!

很深的一个感触:solidity发展的很快,几乎是几周一更新,编译器和工具都跟不上节奏,很多问题只能看英文,中文学习资料太少了,还在学习区块链的同学可以一起努力!加了很多的交流群,虽然人太多了但是没有几个人在聊技术,所以面向学生新建了一个小群:194180460

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/1319895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存