前言(话不多说)
先解释下<前端小白入门区块链系列03的代码>
pragma solidity ^0.4.22; // 声明solidity语言以及版本是0.4.22
contract Ballot { // 声明一个合约
uint public amount; // 声明无符号整型
mapping(address => uint) balances; // 声明一个哈希结构复杂数据类型
constructor(uint _amount)public{ // 够着函数
amount = _amount; // 初始化金额
balances[msg.sender] = amount; // 存储初始化金额
}
// 发送币 (ads: 发送的地址,coin:发送币的数量)
function sendCoin(address ads,uint coin) public returns (bool){
require(coinreturn true;
}
// 获取地址金额
function getAdsAmount(address ads) public view returns (uint){
return balances[ads];
}
// 获取余额
function getBalance()public view returns (uint){
return this.balance;
}
// 获取发送者地址
function getMsgSender()public view returns (address){
return msg.sender;
}
// 获取发送者的值
function getMsgValue()public view returns (uint){
return msg.value;
}
}
复制代码
神神叨叨
纸上得来终觉浅,绝知此事要躬行.做傻事都不容易,不限理解概念就开干,很容易产生很多的误区,上面解释了一番只是为了让大家兴奋下.这期说下智能合约
什么是智能合约
什么是智能合约? 智能合约(Smart Contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
我们这里讲的智能合约指的是区块链领域的智能合约。
区块链领域的智能合约有以下特点:
-
规则公开透明,合约内的规则以及数据对外部来讲是可见的。
-
所有交易公开可见,任何地址与智能合约进行交易,都会公开的展示起来,不会存在任何虚假或者隐藏的交易。
之前社会中的合同或者约定的行为,都是由人来制定规则,然后由人去执行,遇到边界问题或者异常,再由人去做界定。
但是智能合约不同,开发者通过智能合约去制定一套规则,然后发布到线上,当人们去做事情与智能合约交互的,由机器去完成业务的部分,这样就避免了由人来执行时造成的作弊行为。
这样就引入了去中心化自治组织(DAO,Decentralized Autonomous Organization)的概念,从理论上对智能合约的意义进行了升华。
智能合约的分类
1 以太坊 Solidity
Solidity 是以太坊的智能合约实现的编程语言,运行在以太坊的虚拟机 Ethereum Virtual Machine(EVM)上。
Solidity 是静态类型的,支持继承、库和其他功能中复杂的用户定义类型。
Solidity 是本系列课程的主要内容,将在接下来的课程中详细介绍。
Hyperledger Fabric Hyperledger Fabric™ 是 The Linux Foundation® 主办的 Hyperledger® 项目之一。
Hyperledger Fabric 旨在作为开发模块化体系结构的区块链应用程序的基础,以便诸如共识和会员服务等组件可以即插即用。
它使用容器技术来托管构成系统应用逻辑的智能合约(也称为链代码),简而言之,Hyperledger Fabric 是为企业构建的领先的开源、通用区块链结构。
和以太坊不同的是 Hyperledger 主要面对的是企业级的项目开发,Hyperledger 项目的主要推动者是 IBM。
我们在 IBM 的 Bluemix 上看到的区块链的服务,就是基于 Hyperledger 的。
下图为 Hyperledger Fabric v1.0 中的交易生命周期,由于不是本文重点,这里不重点描述。
2 以太坊 Ethereum 的 Solidity
Solidity 是太坊 Ethereum 的智能合约使用的的编程语言。
Solidity 是一种静态类型的编程语言,用于开发在 EVM 上执行的智能合约,被编译为可在 EVM 上执行的字节码。
借由 Solidity,开发人员能够编写出可自我执行其欲实现之商业逻辑的应用程序,该程式可被视为一份具权威性且永不可悔改的交易合约,对已具备程式编辑能力的人而言,编写 Solidity 的难易度就如同编写一般的编程语言。
智能合约和代币的关系
提起智能合约,很多人可能不是很清楚,但是一说 ICO,大部分人都是很感兴趣的。
ICO 的本质就是,用智能合约建立规则,并存储数据。用户给智能合约发送一定数量的 Eth,智能合约就在自己的账户内建立对应地址的代币数据。
1. ERC20
以太坊一直在维护一个项目,被成为EIP(Ethereum Improvement Proposals)。
Ethereum Improvement Proposals (EIPs) describe standards for the Ethereum platform, including core protocol specifications, client APIs, and contract standards.
在这些标准中,就包含了关于智能合约的部分。
官方项目地址详见这里,我们在 Finalized EIPs 中可以找到 ERC20 的描述。
ERC20 定义了 ERC-20 Token 的通用标准,所有符合 ERC20 的智能合约创建出来的代币,都被称为 ERC20 代币,都能够被以太坊钱包(几乎所有支持以太币的钱包,包括 imToken、币兜钱包等,也支持 ERC-20 的代币)识别使用。
2 ERC223
由于之前出现过智能合约的问题,导致至少有价值四十万美元的以太币的损失,所以后来出现了 ERC20 的改良版本——ERC223。ERC223 标准是向下兼容 ERC20 的。
目前市面上绝大部分代币都是基于 ERC20 标准的,基于 ERC223 的并不多,比如 ATN。
3 他们的关系 举个简单的例子,智能合约就像是一张白纸,代币就像是用白纸叠成的纸飞机,我们还可以用这张白纸来做纸青蛙。
智能合约能给我们带来什么?
从现在这个时间点来看,智能合约首先的应用是创造代币,也就是大家提到的 ICO。
ICO 创造一种新的商业模式,它将社区的力量发挥出来。在技术圈内,社区一直是很重要的力量,很多知名的开源项目比如 Linux,都是集合了社区开发者的智慧变得越来越完善。
而 ICO 的意义在于,真正有价值的项目可以不用通过传统的风投而是通过社区人员众筹来获得项目的启动资金,并且随着项目的发展,社区人员也能通过它来收到回报。这从一定程度上解决了技术人员有能力做项目,却没能力筹钱的问题。
但是 ICO 也暴露了人性的恶,2017 年开始,大量没有技术背景的 ICO 出现在全球市场上,各种负面新闻也出现,到 2018 年年初,已经有大部分 ICO 以失败告终。
智能合约的中心思想是用机器去实现既定的规则,让规则内的人们不会去作弊,并提高了业务的效率。
除了发代币之外,智能合约的应用场景非常多,比如投票、结合物联网做智能家居等等。
在不久的将来,智能合约的应用注定会爆发。
结束语
- 区块链正在影响着我们的生活,现在看来更多的是和钱打交道,等到他足够火的时候,应该就可以直接和你打交道了,哈哈.
- 前端小白入门区块链系列持续更新中.....
- 大家加油~