宠物商店(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 └── ...
12345678910111213141516 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; } }
1234567891011121314151617以上是实现宠物领养的合约代码.
指定编译器版本定义 Adoption 的合约结构
contract {...} 1 定义一个存放地址的定长数组 定义合约函数 adopt
Public类型, 可以被外部访问, uint参数 为调用时传入的要领养的宠物的ID, 返回值就是当前领养的宠物id require() 用于检查变量值是否满足当前条件, 不满足条件则立即抛出异常, 并且对所有的已做修改进行回滚(revert) 使用数组的对应的 ID index 来保存领养者的地址 定义合约函数 getAdopters()<