
NO.8什么是Solidity?
Solidity is a contract-oriented, high-level language for implementing smart contracts. It was influenced by C++, Python and JavaScript and is designed to target the Ethereum Virtual Machine (EVM).
Solidity 属于强类型语言,内含的类型除了常见编程语言中的标准类型,还包括 address 等以太坊独有的类型,Solidity 源码文件通常以 .sol 作为扩展名。
Solidity 源代码要成为可以运行在以太坊上的智能合约需要经历如下的步骤: 用 Solidity 编写的智能合约源代码需要先使用编译器编译为字节(Bytecode),编译过程中会同时产生智能合约的二进制接口规范(Application Binary Interface,简称为 ABI); 通过交易(Transaction)的方式将字节码部署到以太坊网络,每次成功部署都会产生一个新的智能合约;
而使用 Javascript 编写的 DApp 通常通过 web3.js + ABI去调用智能合约中的函数来实现数据的读取和修改。整个过程可以用下图示意:

Bytecode 和 ABI 可以认为是智能合约源代码的两种外在表现形式,其中 Bytecode 是给机器执行的,而 ABI 是给 DApp 开发者用的用自然语言描述的合约接口规范。
从整体上来看,开发智能合约 + DApp 不需要我们精通 Solidity,但需要理解他和我们所熟知的语言的最大区别,方可顺利开发出正确的智能合约,接下来的小册内容会逐步讲解这些区别。
怎么开发 Solidity?
入门新语言最自然的方式是在编辑器中编写 Hello World,然后尝试运行,因为 Solidity 的领域特殊性,我们会介绍几种可能的 Solidity 开发方式,然后由其中最容易上手的部分(Remix 集成开发环境)过渡到大家最熟悉的方式(标准前端开发环境)。
Remix 是以太坊社区开发出来的在线智能合约集成开发环境,包含开发、部署、调试支持,官方还提供了桌面版,但桌面版仍然需要依赖网络才能正确运行;在前端开发环境中构建自己的智能合约的工作流,则需要组合使用现有的工具实现智能合约的编写、编译、部署、测试等环节。
接下来我们首先从 Remix 入手,熟悉了 Solidity 基本语法,智能合约基本流程之后,我们会在大家所熟悉的前端开发环境中构建智能合约工作流。
No.9 你的第一个智能合约“Hello World”
章实现主要借助于以太坊社区开发的非常好用的在线Solidity集成开发环境Remix,可以在这个环境里面编写、部署、测试智能合约,Remix有强大的自动完成、语法高亮、实时编译检查等功能。同时还提供了桌面版的IDE,有兴趣去的可以去这里下载。
我们使用的网页版的Remix,放心它不会因关闭而消失,因为它存储位置是LocalStorage,在chrome中打开:https://remix.ethereum.org。

默认界面如上:
1、文件目录:存放合约目录,新建、打开等功能;
2、代码编辑区域:提供语法高亮、自动完成功能,可以调节字号大小,因为LocalStorage关系,刷新浏览器并不会删除代码;
3、调试工具:编译、运行、单步调试、配置选项等功能;
4、输出界面:打印所有测试活动的日志及结果。
删除编辑区域默认代码,输入如下:
pragma solidity ^0.4.17;
contract Car {
string public brand;
constructor(string initialBrand) public {
brand = initialBrand;
}
function setBrand(string newBrand) public {
brand = newBrand;
}
function getBrand() public view returns (string) {
return brand;
}
}
⚠️不要复制、黏贴。
对代码稍作解释:

声明了一个非常简单的智能合约Car,其中一个公共变量,一个构造函数,剩余两个函数负责读取、设置Car的品牌属性brand。
针对声明格式,做下格式的简要说明:

Public:任何人都能调用该函数,包括合约内部/外部/其他合约;
Privare:只有内部合约才能调用;
View:能够返回数据,并且不修改合约数据存储状态的函数;
Constant:和view含义相同,不修改合约数据的函数;
Pure:纯粹的计数函数;
Payable:标记付款类的函数,调用该函数的用户在完成交易时支付实际的资金。
在使用Remix时注意科学上网。
#热议区块链#
后更:
NO.10 智能合约工作流初探
NO.11 智能合约工作流再探
NO.12 智能合约工作流领悟
第一大部分 教学 结
添加新手交流群:币种分析、每日早晚盘分析
添加助理微信,一对一亲自指导:YoYo8abc