在Linux环境下入门写一段solidity编译遇到error和warning,经过一番研究后才得其缘由,下面以一段demo总结一下。

pragma solidity ^0.5.;        // 指定所需的编译器版本

contract clac{
function multiply(uint a, uint b) returns (uint){
return a + b;
}
}

看似很正常的一段两数相加代码,可惜编译出错:

出现了一段error和一段warning

$ solc --bin testContract.sol

testContract.sol::: Error: No visibility specified. Did you intend to add "public"?
function multiply(uint a, uint b) returns (uint)
^ (Relevant source part starts here and spans across multiple lines). testContract.sol::: Warning: Function state mutability can be restricted to pure
function multiply(uint a, uint b) public returns (uint) {
^ (Relevant source part starts here and spans across multiple lines).

原因是public声明和puer没有处理好。

public声明

No visibility specified. Defaulting to “public”。   -> 未指定可见性,采用默认public可见范围。

  • public:智能合约外部和内部都可使用的方法;
  • internal:智能合约(包括派生合约)内部可用调用的方法;
  • external:可通过其他合约和交易进行调用的方法;
  • private:只有在定义的合约中才可以调用,即使派生的合约也无法调用;

错误在于提醒开发者,你未指定当前function的可见范围,合约会默认采用public,有一定的风险存在。特别针对一些不可对外公开访问的智能合约,需要注意此提示。消除此警告的方法只需在方法中添加public声明即可。修改之后的代码如下:

pragma solidity ^0.5.;        // 指定所需的编译器版本

contract clac{
function multiply(uint a, uint b) public returns (uint){
return a + b;
}
}

pure限制词

Function state mutability can be restricted to pure。 -> 功能状态可变性可以限制为pure

在之前的版本中我们经常使用constant来限制一个方法的制度性,当用constant修饰之后,此方法在被调用时不会进行存储的变更,同样不会产生交易和gas花费。而pure正是constant的替代品,逐渐的在替代constant的功能。

修改后代码如下:

pragma solidity ^0.5.;        // 指定所需的编译器版本

contract clac{
function multiply(uint a, uint b) public pure returns (uint){
return a + b;
}
}

记录智能合约solidity编译的坑的更多相关文章

  1. 以太坊智能合约 Solidity 的常用数据类型介绍

    目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...

  2. 区块链之智能合约 solidity踩坑 --上篇

    概述 最近在写合约时遇到一些坑,做一下总结: 介绍主要分一下三个方面: 对区块链的简单描述 结合业务场景,编写简单智能合约,时遇到的坑(上篇) assembly 的使用说明(下篇) 正文 进入正题之前 ...

  3. 智能合约 solidity 开发的环境基本搭建

    以太坊Dapp开发快速入门 以太坊为开源社区,虽然设计东西都很优秀,但是组件十分的杂乱,因此下面首先简单介绍下以太坊的一些常用组件以及各种工具介绍 Geth Geth是由以太坊基金会提供的官方客户端软 ...

  4. 第一行代码:以太坊(2)-使用Solidity语言开发和测试智能合约

    智能合约是以太坊的核心之一,用户可以利用智能合约实现更灵活的代币以及其他DApp.不过在深入讲解如何开发智能合约之前,需要先介绍一下以太坊中用于开发智能合约的Solidity语言,以及相关的开发和测试 ...

  5. solidity 智能合约之间的调用

    智能合约之间的调用 在区块链上,有些功能往往无法通过一个智能合约完成,此时便会用到智能合约之间的调用.本篇文章带大家通过具体示例来了解一下智能合约之间的调用. 在智能合约的编译过程中,有两种情况:调用 ...

  6. 基于Fisco-Bcos的区块链智能合约-简单案例实践

    一.智能合约介绍 智能合约是指把合同/协议条款以代码的形式电子化地放到区块链网络上.FISCO BCOS平台支持两种智能合约类型:Solidity智能合约与预编译智能合约 Solidity与Java类 ...

  7. Go语言打造以太坊智能合约测试框架(level1)

    传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...

  8. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...

  9. Go语言打造以太坊智能合约测试框架(level2)

    传送门: 柏链项目学院 第二课 智能合约自动化编译 前期内容回顾 之前我们的介绍的是如何通过solc编译智能合约,并且调用智能合约,本节我们继续实践,将智能合约的代码自动化编译以及abi文件生成搞定. ...

随机推荐

  1. js限制字符串长度,超出的部分补...

    value?(value.length>12?(value.substring(0,12))+"...":value):""

  2. Web应用程序的敏感信息-隐藏目录和文件

    Web应用程序的敏感信息-隐藏目录和文件 0x1.场景 Web应用程序根文件夹中可能存在大量隐藏信息:源代码版本系统文件夹和文件(.git,.gitignore,.svn),项目配置文件(.npmrc ...

  3. 【转】Python3 (入门6) 库的打包与安装

    Python3 (入门6) 库的打包与安装 本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/6940288 ...

  4. PostgreSQL快速入门

    一.PostgreSQL是什么? PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS). 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们. PostgreSQ ...

  5. thymeleaf的onclick标签传参异常

    转自https://my.oschina.net/u/2312080/blog/2878183 异常 严重: Servlet.service() for servlet [DispatcherServ ...

  6. vue-resource post请求后台接口报400(跨域问题解决方法)

    1.打开config/index.js,在proxyTable中添写如下代码 proxyTable: { '/api': { //使用"/api"来代替"http://f ...

  7. make menuconfig 笔记

    由于公司对于新CPU开发很着急,似乎明年2月份就能达到量产的目标.之前只有2个人在做平台级的开发,于是就另外抽调人手,而我就在其中.我之所心搞openwrt是因为硬件部门的样机一直未有时间表,而我总不 ...

  8. 论文阅读 | A Curriculum Domain Adaptation Approach to the Semantic Segmentation of Urban Scenes

    paper链接:https://arxiv.org/pdf/1812.09953.pdf code链接:https://github.com/YangZhang4065/AdaptationSeg 摘 ...

  9. centos/linux/ubuntu在局域网上网

    前言:对于服务器来说,一般不会安装windowns系统,都是会安装类unix系统,在局域网或者在内网中,上网还是走代理上网 1.知道代理服务器的ip及端口 2.就两条命令 export  http_p ...

  10. Zabbix(一)

    安装一台CentOS: CentOS-7.4-x86_64-DVD-1708 https://www.cnblogs.com/xiewenming/p/7732144.html https://blo ...