智能合约(solidity)编程入门

智能合约(solidity)编程入门

一. 智能合约概述

前言区块链1.0: 2009年比特币的诞生。区块链2.0: 以太坊的诞生,结合了区块链与智能合约技术的平台。

什么是智能合约1996年,Nick Szabo在文章《Smart Contracts: Building Blocks For Digital Markets》中提出了智能合约的概念。所谓“合约”,就是条文、合同一类的东西,里面记录了发生的条件与对应执行的条款,以支持确权等操作;所谓"智能",就意味着自动化、可编程。

所以,智能合约就是可编程的合同,也可以理解为一段自动执行的条文合同,在计算机中,就是一段自动执行的程序片段。它更易于合约保存,并且由确定的算法运行,给定输入,就得到对应的输出,极大保障了合约的执行力。

智能合约的现状与前景从编程角度而言,智能合约就是一段代码。相比常规代码,智能合约具有许多差别与限制,例如:

单线程执行代码执行会消耗资源,不能超出资源限制目前难以获取链外数据,例如取得天气信息、比赛结果等其他限制,如TPS这些特点使得目前智能合约生态以链上资源的治理为核心。就像以太坊上各式各样的ERC标准与治理方案;EOS上有各种资源模型,比如CPU、RAM、Rex、Bancor协议等。

显然,就目前的生态而言,智能合约对现实世界的影响力有限。

但事物总是在发展的。目前,已有许多致力于突破这些限制的研究,典型的有Oracle(谕言机,但常被称为预言机),它允许智能合约和链外进行交互,这样就能大大提高智能合约的使用场景,彷佛一台电脑通上了网;再比如那些突破链自身性能瓶颈的尝试,例如支付通道、跨链、plasma、rollup,它们都从不同角度打破安全与性能的枷锁。

毋庸置疑,智能合约将扮演着越来越重要的角色,将来随着以太坊2.0的落地,也许会开启新一个区块链时代。

智能合约技术以太坊采用了Solidity作为智能合约语言,Solidity 是一门为实现智能合约而创建的高级编程语言,能在允许以太坊程序的节点上运行。该语言吸收了C++、JavaScript的一些特性,例如它是静态类型语言,支持继承、库等。

二. solidity开发讲解

简单的示例:

// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.4.16 =0.4.16 =0.4.0 0.7.0 =0.4.22 =0.4.21 uint) balances; function transfer(address to, uint amount) public { uint balance = balances[msg.sender]; if (balance < amount) revert NotEnoughFunds(amount, balance); balances[msg.sender] -= amount; balances[to] += amount; // ... } function transfer2(address to, uint amount) public { uint balance = balances[msg.sender]; require(balance > amount," balance must be greater than amount"); balances[msg.sender] -= amount; balances[to] += amount; // ... }}

结构

pragma solidity >=0.4.0 =0.4.25 =0.7.0

比丘资源网 » 智能合约(solidity)编程入门

发表回复

提供最优质的资源集合

立即查看 了解详情