zoukankan      html  css  js  c++  java
  • 在以太坊上用代币如何与智能合约交互,进行数据传递(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 很简单,取决于你是读取数据还是写入数据。

    今天先介绍到这

  • 相关阅读:
    How Ironic Inspector Works
    tinyipa make
    dib build ipa image Injection password
    coreos ipa image Injection of public key
    Buildroot ipa image
    diskimage-builder
    ironic baremetal node rescue/unrescue mode
    OpenStack-Ironic裸金属简介
    Python之错误与异常处理
    Python之上下文管理协议
  • 原文地址:https://www.cnblogs.com/juehai/p/9553245.html
Copyright © 2011-2022 走看看