以太坊是一个去中心的平台。(首先是一个平台)。允许在这个平台上运行DApp。以太坊是DApp的容器。DApp是一段/一堆程序。DApp是使用智能合约编写。
智能合约有点像面向对象的语言:类。
一个或多个智能合约可以一起组成一个DApp。因此,运行在以太坊上的程序就是智能合约。
以太坊 = Android 系统
智能合约 = 运行在Android 系统上的各种底层的库(C/C++写的)。
用户不可能用程序直接操作,需要客户端,所以需要web3.js。
web3.js(调用智能合约的JavaScript接口) = Android SDK(java编写的),所有App 都是调用Android SDK写的。
智能合约客户端(通过调用 web3.js 实现) = Android App
智能合约为什么要运行在以太坊上?主要是因为智能合约运行在以太坊上可以非常容易地实现交互。
以太坊把底层的一致性协议已经封装起来了。以太坊已经封装了底层的操作,可以很容易让智能合约相互交互,还封装了PoW、PoS等一致性协议。这样我们就不需要操心底层的操作了。
以太坊有一种内部货币:ether(以太)。为了发布智能合约或执行智能合约中的方法需要支付以太ether。