自定义Solidity合约实现:PetToken与ERC721详解

版权申诉
5星 · 超过95%的资源 19 下载量 61 浏览量 更新于2024-09-13 1 收藏 55KB PDF 举报
本篇文章是关于使用Solidity语言从头编写一个简单的智能合约的教程,以实现一个名为"PetToken"的代币。该合约是在以太坊区块链上运行的,并基于两个外部库:`PetFactory.sol` 和 `ECR712.sol`。作者在GitHub仓库`https://github.com/wangjinxin613/HelloPet`中分享了代码。 标题"从头写一个solidity智能合约(三)代码实现"聚焦于以下几个关键知识点: 1. **智能合约类型与继承**: - 合约`PetToken`继承自`PetFactory`和`ERC721`这两个合约,表明它不仅具备宠物工厂的功能,还遵循了ERC721标准,即非同质化代币(NFT)的标准。 2. **合约变量和常量**: - `name` 和 `symbol` 分别定义了代币的名称和符号,这里为"Pet Token"和"PET"。 - `decimals` 是一个公共变量,设为0,表示PET币是不进行分割的,小数点后无位。 - `allowed` 和 `petApprovals` 是映射类型,分别用于存储地址间的转账权限和预授权转账地址信息。 3. **函数声明**: - `balanceOf` 函数是一个公共视图函数,用于查询指定地址的余额。 - `ownerOf` 函数也是公共视图函数,返回给定tokenId对应的拥有者地址。 - 私有函数 `_transfer` 负责实际的转账操作,它更新余额并记录转移详情。 - `transfer` 函数是公开的,但只能由代币的所有者调用,确保了转账操作的权限控制。 4. **ECR712兼容性**: - 文档提到合约需要遵守ECR712协议,这可能意味着它包含了与ERC712相关的验证逻辑,用于安全地执行智能合约中的签名和身份验证功能。 通过阅读这段代码,读者可以了解到如何在Solidity中设计一个基础的NFT代币合约,以及涉及的一些基本操作如余额查询、转账和权限管理。这个教程对于初学者理解智能合约编程和ERC721协议的实践应用非常有帮助。