目录结构
默认的 Truffle 目录结构包含以下内容:
contract/:包含我们智能合约的 Solidity 源文件。 这里有一个名为 Migrations.sol 的重要合约,我们稍后会谈到。
migrations/:Truffle 使用迁移系统来处理智能合约部署。 迁移是一种额外的特殊智能合约,用于跟踪更改。
test/:包含我们智能合约的 JavaScript 和 Solidity 测试
truffle-config.js:配置文件
宠物店 Truffle Box 里面有额外的文件和文件夹,但我们暂时不用担心这些。
编写智能合约
我们将通过编写充当后端逻辑和存储的智能合约来启动我们的 dapp。
在contracts/ 目录中创建一个名为Adoption.sol 的新文件。
将以下内容添加到文件中:
pragma solidity ^0.5.0;
contract Adoption {
}
注意事项:
所需的最低版本的 Solidity 在合同顶部注明:pragma solidity ^0.5.0;。 pragma 命令表示“只有编译器关心的附加信息”,而插入符号 (^) 表示“指示的版本或更高版本”。
与 JavaScript 或 PHP 一样,语句以分号结尾。
变量设置
Solidity 是一种静态类型语言,这意味着必须定义字符串、整数和数组等数据类型。 Solidity 有一种独特的类型,称为地址。 地址是以太坊地址,存储为 20 字节值。 以太坊区块链上的每个账户和智能合约都有一个地址,并且可以向该地址发送和接收以太币。
在下一行添加以下变量 contract Adoption {
.
address[16] public adopters;
注意事项:
我们定义了一个变量:采用者。 这是一组以太坊地址。 数组包含一种类型,并且可以具有固定或可变长度。 在这种情况下,类型是地址,长度是 16。
您还会注意到采用者是公开的。 公共变量具有自动 getter 方法,但在数组的情况下,键是必需的,并且只会返回一个值。 稍后,我们将编写一个函数来返回整个数组以在我们的 UI 中使用。