加载中...
智能合约与Solidity学习(一)
发表于:2021-08-15 |
字数统计: 1.5k | 阅读时长: 5分钟 | 阅读量:

智能合约与Solidity学习心得(一)

一、起源

智能合约(Smart Contract),顾名思义,是具有“智能”的合约。所谓智能,是可以自动实现一定的功能;所谓合约,就是一种标准或规则用以约束和规范一些行为。智能合约的概念很早就被提出,但是这个概念在近些年来才广为流传,并且作为区块链的伴生概念,有了新的意义。智能合约部署的一个较为知名的案例就是以太坊(Ethereum)。那么下面我们首先来看一下,什么是区块链和以太坊。

区块链与以太坊

区块链

区块链(Blockchain)起源于2008年的一篇论文《比特币:一种点对点的电子现金系统》,作者化名为中本聪。在这篇文章中,中本聪先生根据现有的P2P技术加密技术等,提出了区块链的概念,并以这些技术开发了一种数字货币——比特币的交易系统。

区块链技术从本质上讲实可以分为区块(block)和链(chain)两大部分,区块作为记录交易(transaction)的载体,将区块连接成链就成为了区块链。

区块链的主要特点是:

  • 去中心化

    去中心化是与中心化相对的概念,像我们平常使用的一些系统,绝大多数是中心化的,其中的信息由我们信任的企业或组织进行保管,如银行的交易记录,个人的身份信息等。而去中心化就是不存在上述的机构专门存储信息,而是由每个参与者进行信息的存储,这样一来,当参与者足够多的时候,少数谬误在“对账”的过程中被纠正。比特币交易系统作为区块链的首个应用者就采用了这种方式进行信息记录。

  • 共识机制

    共识机制就是达成共识的方式。由于区块链是去中心化的,也就是说没有一个共同的信任单位有“权威”领导大家,所以在这样的系统中,每笔交易的达成都需要通过共识机制来进行完成。常见的共识机制如下:

    • 工作量证明机制(PoW)
    • 权益证明机制(PoS)
    • 股份授权证明机制(DPoS)

    这里以比特币交易系统为例,解释比特币交易系统中的共识机制——工作量证明机制。上文中提到,每笔交易的达成需要通过共识机制,同时,每笔交易都将记录在区块之中,因此“记账”这个行为的产生需要达成共识机制。比特币交易系统采用的是PoW,就是通过计算随机哈希散列的数值来进行记账,最先计算出的参与者可以进行“记账”,这需要很大的计算资源。那么这些参与者为什么要争抢记账权呢,原因就是记账的人将被奖励比特币,这也是比特币产生的方式。

    所以总而言之,比特币交易系统通过奖励比特币的方式激励参与者争抢记账权,而记账权争抢的规则就是进行大量的计算,一般而言,算力越大的一方就更有可能抢到记账权,其工作量也就越大,因此这种方式叫工作量证明机制,而争抢记账权的规则,就是共识机制

  • 智能合约

    在初始的比特币系统中,智能合约的概念还不明显,因此我们将在下文介绍以太坊时,以以太坊为例介绍智能合约。

以太坊

由于比特币的交易系统仅支持简单的P2P加密交易的过程,即付款方向收款方的加密钱包中发送一定数量的比特币,其中的身份认证环节是有比特币交易系统自带的一种脚本语言实现的,但这种脚本语言在比特币交易系统中仅仅用作支持这一种场景,由此产生了以太坊,作为一种新式交易的平台。

以太坊(Ethereum),是一个平台,为用户提供各种模块使得用户来搭建自己的应用,而以太坊上的“应用”,实质上就是智能合约。在以太坊上搭建的智能合约可以使得用户“自动化”进行购买,就像搭建了一台有规则的自动贩卖机一样。

由此可见,智能合约实质上就是一种人为制定的,部署在区块链上的用于自动处理交易或完成特定功能的可执行的程序。既然智能合约的本质是一种程序,就需要运行环境和一定的编程语言来编写。

二、智能合约与Solidity

智能合约作为一段可以实现某种功能的程序,其最初被应用于以太坊,而在以太坊上运行的环境就是以太坊虚拟机(EVM),而实际进行编写智能合约的语言是Solidity。编译器通过编译Solidity源码,将其转换为能在EVM上运行的程序,在部署到EVM后,则可作为一种智能合约被使用。

实际上,我们可以通过 Java 语言进行类比理解。我们首先编写Java源码,然后通过编译器将其转换为JavaClass文件,并在Java虚拟机(JVM)上进行运行。

一般来说,在本地部署EVM较为复杂,因此对于学习Solidity的人员,需要通过Remix来进行线上的学习和调试,在有一定的基础后,再进行本地的EVM部署等操作。

从下期开始将总结Solidity的学习心得,敬请期待♪(^∇^*)~~

上一篇:
Django学习笔记(一)
下一篇:
Hello World
本文目录
本文目录