美文网首页区块链智能合约开发区块链区块链大学
在以太坊上用代币如何与智能合约交互,进行数据传递(1)

在以太坊上用代币如何与智能合约交互,进行数据传递(1)

作者: 信渤科技区块链 | 来源:发表于2018-08-29 11:59 被阅读45次

    在以太坊上用代币如何与智能合约交互,进行数据传递(1)

    从接触区块链概念到进入开发状态,也有一段时间了,最近也在以太坊上发了几个智能合约,现把个人的经验总结以下,也算是学习总结吧,希望后来者减少一些坑.如你有不明清楚的,也可以直接和本人联系,微信yyy99966,共同学习

    本文作为系列的首篇,以希望能详细的把交互过程阐述清楚. 为学习者提供些许帮助.

    概述

    为了与合约交互而向Ethereum网络发送请求,那么您很快就会意识到,我要使用什么编程语言,这里本人推荐,经本人反复偿试最后锁定用web3jAPI,是目前最好用的以太坊和传统的程序进行交互的编程API接口,此接口是以nodejs作为服务器编程环境,而nodejs又是基于javascript脚本语言的服务器端程序框架,也就是说我们实现数据交换,需要的编程知识结构:

    1.熟悉nodejs编程环境框架

    2.熟练javascript语言。

    3.熟悉web3jsAPI接口规范

    4.熟悉以太坊智能合约的编写solidity语言

    5.网页前端的html,当然也需要

    6.还有重要一项数据库,这里使用mysql

    有了以上的知识背景,下面开始介绍几个web3jAPI中相关概念:

    读写数据

    Ethereum网络对向网络写入数据和从网络读取数据进行了区分,这种区分在如何编写应用程序中起着重要作用。 通常,写入数据称为交易( transaction ),而读取数据称为调用( call )。事务和调用的处理方式非常不同,具有以下特征。

    交易 (Transactions)

    交易从根本上改变了网络的状态。交易可以是简单到将以太币发送到另一个帐户,也可以是复杂到执行合约函数或向网络添加新合约。 交易的定义特性是它写入(或更改)数据。交易的运行成本很高,称为“gas”,交易的处理需要时间。 当您通过交易执行合约的功能时,您不能接收该函数的返回值,因为交易没有立即处理。一般来说,通过交易执行的函数不会返回值; 它们将返回一个交易id。所以总的来说,交易(Transactions)特性如下:

    消费 gas (以太币 ether)

    修改网络状态

    不能马上执行

    不会暴露一个返回值(之返回一个交易id)

    调用 (Calls)

    调用正好相反。调用可以是在网络中执行代码,不会永久的改变数据(状态)。调用是免费的,它的特性就是读取数据。 当你使用 call 调用一个合约中的一份方法时,函数会马上返回。总的来说 Calls 的特性:

    免费(不消耗 gas)

    不改变网络状态

    马上执行

    会暴露一个返回值

    选择使用 Tranaction 或 Call 很简单,取决于你是读取数据还是写入数据。

    今天先介绍到这

    相关引用本人博客园连接https://i.cnblogs.com/EditPosts.aspx?postid=9553245

    相关文章

      网友评论

        本文标题:在以太坊上用代币如何与智能合约交互,进行数据传递(1)

        本文链接:https://www.haomeiwen.com/subject/wuotkftx.html