从接触区块链概念到进入开发状态,也有一段时间了,最近也在以太坊上发了几个智能合约,现把个人的经验总结以下,也算是学习总结吧,希望后来者减少一些坑.如你有不明清楚的,也可以直接和本人联系,微信yyy99966,共同学习
本文作为系列的首篇,以希望能详细的把交互过程阐述清楚. 为学习者提供些许帮助.
为了与合约交互而向Ethereum网络发送请求,那么您很快就会意识到,我要使用什么编程语言,这里本人推荐,经本人反复偿试最后锁定用web3jAPI,是目前最好用的以太坊和传统的程序进行交互的编程API接口,此接口是以nodejs作为服务器编程环境,而nodejs又是基于javascript脚本语言的服务器端程序框架,也就是说我们实现数据交换,需要的编程知识结构:
1.熟悉nodejs编程环境框架
2.熟练javascript语言。
4.熟悉以太坊智能合约的编写solidity语言
5.网页前端的html,当然也需要
6.还有重要一项数据库,这里使用mysql
有了以上的知识背景,下面开始介绍几个web3jAPI中相关概念:
读写数据
Ethereum网络对向网络写入数据和从网络读取数据进行了区分,这种区分在如何编写应用程序中起着重要作用。 通常,写入数据称为交易( transaction ),而读取数据称为调用( call )。事务和调用的处理方式非常不同,具有以下特征。
交易 (Transactions)
交易从根本上改变了网络的状态。交易可以是简单到将以太币发送到另一个帐户,也可以是复杂到执行合约函数或向网络添加新合约。 交易的定义特性是它写入(或更改)数据。交易的运行成本很高,称为“gas”,交易的处理需要时间。 当您通过交易执行合约的功能时,您不能接收该函数的返回值,因为交易没有立即处理。一般来说,通过交易执行的函数不会返回值; 它们将返回一个交易id。所以总的来说,交易(Transactions)特性如下:
- 消费 gas (以太币 ether)
- 修改网络状态
- 不能马上执行
- 不会暴露一个返回值(之返回一个交易id)
调用 (Calls)
调用正好相反。调用可以是在网络中执行代码,不会永久的改变数据(状态)。调用是免费的,它的特性就是读取数据。 当你使用 call 调用一个合约中的一份方法时,函数会马上返回。总的来说 Calls 的特性:
- 免费(不消耗 gas)
- 不改变网络状态
- 马上执行
- 会暴露一个返回值
选择使用 Tranaction 或 Call 很简单,取决于你是读取数据还是写入数据。
今天先介绍到这
- 还没有人评论,欢迎说说您的想法!