框架官网

https://www.trufflesuite.com/docs/truffle/getting-started/compiling-contracts

在vscode中【查看-终端】终端输入编译

编译代码

pragma solidity >=0.4.22 <0.8.0;contract Adoption {address[16] public adopters;function adopt(uint petId) public returns (uint) {require(petId>=0 && petId <=15);adopters[petId] = msg.sender;return petId;}function getAdopters() public view returns (address[16]) {return adopters;}
}
truffle compile

编译遇到问题

1.没有运行脚本权限解决办法

https://blog.csdn.net/weixin_42288182/article/details/106896534

2.Compilation failed. See above.

CompileError: /E/pet_shop/contracts/Adoption.sol:12:49: TypeError: Data location must be "memory" for return parameter in function, but none was given.
    function getAdopters() public view returns (address[16]) {
                                                ^---------^

应该是我用的最新编译器,教程中代码是0.4.22的,solidity0.5要求写数据存储位置

所有的复杂类型如数组(arrays)和数据结构(struct)有一个额外的属性:数据的存储位置(data location)。可为memorystorage

根据上下文的不同,大多数时候数据位置有默认值,也通过指定关键字storage和memory修改它。

函数参数(包含返回的参数)默认是memory
局部复杂类型变量(local variables)和 状态变量(state variables) 默认是storage

局部变量:局部作用域(越过作用域即不可被访问,等待被回收)的变量,如函数内的变量。状态变量:合约内声明的公有变量

总结

强制的数据位置(Forced data location)

  • 外部函数的参数(不包括返回参数)强制为:calldata
  • 状态变量(State variables)强制为: storage

默认数据位置(Default data location)

  • 函数参数及返回参数:memory
  • 复杂类型的局部变量:storage

附自己外部函数(External function)总结:

方式=内部+消息调用

内部=当前合约+继承合约

消息调用=this+c.g()

public为方式

private为方式->内部->当前合约

external为方式->消息调用

internal为方式->内部

选自我购买教程老师的csdn,它写的一个教程

Solidity 教程系列4 - 数据存储位置分析https://blog.csdn.net/xilibi2003/article/details/78868501

function getAdopters() public view returns (address[16] memory){}  写上数据存储位置就对了

pragma solidity >=0.4.22 <0.8.0;contract Adoption {address[16] public adopters;function adopt(uint petId) public returns (uint) {require(petId>=0 && petId <=15);adopters[petId] = msg.sender;return petId;}function getAdopters() public view returns (address[16] memory) {return adopters;}
}

成功以后,打开build,有adoption.json

里面有abi,

ABI

编辑词条

应用程序二进制接口描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。

搜狗百科https://baike.sogou.com/v64965285.htm?fromTitle=ABI

区块链13-区块链去中心化应用开发6-DAPP实战-宠物领养合约编写相关推荐

  1. 程序员如何切入区块链去中心化应用开发

    前段时间一个以太坊游戏应用:Fomo3D异常火爆,在短短的几天内就吸引了几万的以太币投入游戏,第一轮游戏一个"黑客"用了一个非常巧妙的利用以太坊规则成为了最终赢家,拿走了1万多以太 ...

  2. 完全免费的基于区块链和 IPFS 的去中心化博客平台

    一.前言 xLog是一个基于Crossbell区块链的博客解决方案,专注于Web3数据由用户掌控.Crossbell是一个基于Web3技术的去中心化博客平台,用户可以在该平台上发布文章并进行交流和创作 ...

  3. 基于IPFS去中心化相册以太坊Dapp

    Dapp-IPFS-Image 基于IPFS去中心化相册以太坊Dapp 注意: 使用该 github 克隆到本地, 需要 执行 $ npm install 安装依赖 node_modules 安装IP ...

  4. 区块链技术特点之去中心化特性

    想知道更多关于区块链技术知识,请百度[链客区块链技术问答社区] 链客,有问必答!! 由于区块链技术去中心化的特性,其在我们生活中的很多重要领域(如金融.管理)等方面具有重要的意义.例如,我们可以通过在 ...

  5. 用区块链改变人工智能:去中心化带来数据新范式

    近年,从围棋到人类水平的语音识别,人工智能(AI)研究者终于在他们几十年一直努力探索的领域取得了突破.取得突破进展的关键一点是研究者们可以收集巨量的数据并「学习」这些数据,从而将错误率降低到可接受范围 ...

  6. 谁说江西没有区块链;BM:去中心化搜索引擎的时代到来了 | 一分钟链圈

    Hi,艾瑞巴蒂 这里是7月1日的「1分钟链圈」,只需1分钟,看尽全球最热.最新的区块链新闻. 行业 江西软件职业技术大学成立区块链学院 数据显示:上半年活跃Dapp中数量最多的为抽奖类和高风险类 G2 ...

  7. 什么是“中心化”和“去中心化”?区块链是怎么实现去中心化的?

    图1 三类网络拓扑结构 所谓"中心化"和"去中心化",最早是用来刻画网络拓扑结构的术语.1964年,美国兰德公司发布了一份关于分布式通信的报告,提出了三种网络结 ...

  8. 区块链 分布式账本和 去中心化网络

    去中心化网络 我们的资产(比特币),是分布式的存储在网络节点种的,也成为分布式账本 承载分布式账本的网络就叫去中心化网络 分布式账本 中心化在线支付系统,是在一台服务器上分别开设 account/pw ...

  9. 以太坊去中心化_开发以太坊去中心化投票应用程序的指南

    以太坊去中心化 by Timothy Ko 蒂莫西·高(Timothy Ko) 开发以太坊去中心化投票应用程序的指南 (A guide to developing an Ethereum decent ...

最新文章

  1. 《OpenCV3编程入门》学习笔记7 图像变换(二 )霍夫变换
  2. UI设计师必备技能,看看你都学会了吗?
  3. 腾讯开源框架Angel推出3.0版本:全栈机器学习平台
  4. Windows10如何设置系统保护色
  5. SpringBoot+gradle+idea实现热部署和热加载
  6. 2022年中国美妆护肤品行业投资研究报告
  7. 通过shell发送邮件
  8. 推荐!ICDAR 2019-ArT任意形状文字识别国际竞赛!奖金丰厚
  9. 51Nod-2149 字符串出现位置【水题】
  10. redis 验证消息队列也是写磁盘的
  11. 万字长文带你从头构建文本分类器
  12. 什么是Windows Azure
  13. Centos中重置MySQL密码
  14. VMware虚拟机启动报错,无法执行64位操作
  15. 一文带你了解对游戏外挂的逆向分析的详细步骤。
  16. 阿里巴巴蚂蚁金服面经(已拿Offer)附答案!突如其来的的惊喜
  17. 【Unity 3D 从入门到实战】Unity 3D 组件总结
  18. BSN应用案例精选【1】:全链通“铭镜”农产品溯源平台
  19. hadoop启动命令 start-all.sh提示Permission denied问题解决
  20. AI算法,又整新活!萌妹子来挑战~

热门文章

  1. 深层次的讲解repo原理
  2. OPENLDAP关于ldapsearch导出含中文的数据被加密的问题解决
  3. 基于Holt-Winters方法对资源进行预测
  4. 用eclipse和Tomcat写一个简易聊天室
  5. model.fit() fit函数
  6. php输入文本框样式,html中关于文本框样式的总结大全(收藏)
  7. MATLAB 笛卡尔坐标系制图
  8. OD破解演示版保护技术
  9. 2019年web前端学习路线与前端书籍学习
  10. 非开挖管道修复中常用的材料树脂,环氧树脂,聚酯纤维有什么区别