为了与合约交互而向Ethereum网络发送请求,那么您很快就会意识到,我要使用什么编程语言,这里本人推荐,经本人反复偿试最后锁定用web3jAPI,是目前最好用的以太坊和传统的程序进行交互的编程API接口,此接口是以nodejs做为服务器编程环境,而nodejs又是基于javascript脚本语言的服务器端程序框架,也就是说咱们实现数据交换,须要的编程知识结构:java
1.熟悉nodejs编程环境框架node
2.熟练javascript语言。mysql
3.熟悉web3jsAPI接口规范web
4.熟悉以太坊智能合约的编写solidity语言sql
5.网页前端的html,固然也须要数据库
6.还有重要一项数据库,这里使用mysql编程
有了以上的知识背景,下面开始介绍几个web3jAPI中相关概念:
读写数据
Ethereum网络对向网络写入数据和从网络读取数据进行了区分,这种区分在如何编写应用程序中起着重要做用。 一般,写入数据称为交易( transaction ),而读取数据称为调用( call )。事务和调用的处理方式很是不一样,具备如下特征。
交易 (Transactions)
交易从根本上改变了网络的状态。交易能够是简单到将以太币发送到另外一个账户,也能够是复杂到执行合约函数或向网络添加新合约。 交易的定义特性是它写入(或更改)数据。交易的运行成本很高,称为“gas”,交易的处理须要时间。 当您经过交易执行合约的功能时,您不能接收该函数的返回值,由于交易没有当即处理。通常来讲,经过交易执行的函数不会返回值; 它们将返回一个交易id。因此总的来讲,交易(Transactions)特性以下:
- 消费 gas (以太币 ether)
- 修改网络状态
- 不能立刻执行
- 不会暴露一个返回值(之返回一个交易id)
调用 (Calls)
调用正好相反。调用能够是在网络中执行代码,不会永久的改变数据(状态)。调用是免费的,它的特性就是读取数据。 当你使用 call 调用一个合约中的一份方法时,函数会立刻返回。总的来讲 Calls 的特性:
- 免费(不消耗 gas)
- 不改变网络状态
- 立刻执行
- 会暴露一个返回值
选择使用 Tranaction 或 Call 很简单,取决于你是读取数据仍是写入数据。
今天先介绍到这