宠物商店(pet-shop) 学习笔记

本文详细介绍了基于Truffle的宠物商店(pet-shop)项目,包括Truffle的目录结构、合约代码分析、测试代码详解以及前端应用代码的解析,特别是智能合约的adopt函数和前端的事件绑定。文章强调了Truffle的测试功能和JavaScript在Web3交互中的作用,并提及了Dapp的首次实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

宠物商店(pet-shop) 学习笔记

truffle 可以算是一个超级强大的 Ethereum 开发工具集, 集各种的功能集一身, 今天, 照着官方的文档, 和 手把手的教程, 完成了其中提供的一个demo.

truffle的目录结构

目录树

demo
├── build
│   └── contracts
│       ├── Migrations.json
│       └──  Adoption.json
├── contracts
│   ├── Migrations.sol
│   └── Adoption.sol
├── migrations
│   └── 1_initial_migration.js
├── truffle-config.js
├── truffle.js
├── test
│   └──1_initial_migration.js
└── src
    └── ...
  • contract 此目录就是我们的编写的智能合约所存在的目录, 使用solidity语言编写
  • migrations 此目录下是用于迁移部署合约的JS的脚本
  • test 测试合约时所用的测试脚本
  • src 一个前端的实现, 主要是调用 wed3 的库, 与节点服务器进行RPC

代码分析

合约代码

pragma solidity ^0.4.17;

contract Adoption {
  address[16] public adopters;  // 保存领养者的地址
  /**func: 领养宠物 para: 领养宠物ID */
  function adopt(uint petId) public returns (uint) {  
    require(petId >= 0 && petId <= 15);  // 确保id在数组长度内
    adopters[petId] = msg.sender;        // 保存调用这地址 
    return petId; //返回当前宠物ID

  }
  // 返回领养者
  function getAdopters() public view returns (address[16]) {
    return adopters;
  }

}

以上是实现宠物领养的合约代码.

  • 指定编译器版本
  • 定义 Adoption 的合约结构

    contract {...}
    
  • 定义一个存放地址的定长数组
  • 定义合约函数 adopt
    • Public类型, 可以被外部访问, uint参数 为调用时传入的要领养的宠物的ID, 返回值就是当前领养的宠物id
    • require() 用于检查变量值是否满足当前条件, 不满足条件则立即抛出异常, 并且对所有的已做修改进行回滚(revert)
    • 使用数组的对应的 ID index 来保存领养者的地址
  • 定义合约函数 getAdopters()<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值