web3.js

分享实录|以太坊开发需知

ε祈祈猫儿з 提交于 2021-02-12 09:07:11
1 以太坊开发与传统应用开发的差异 相比起传统应用而言,以太坊开发引入了新的基础设施,由此必不可少的带来了部署和运维的复杂度,比如作为系统设计者,我们需要做出选择: 自建节点,还是信任第三方节点? 公有链、联盟链、私有链? 由于加入了新的设计单元:智能合约,我们将面对 设计的复杂度 合约的升级问题:因为智能合约一旦发布就无法更改,万一需要更新合约错误或规则,怎么办? 合约的组织问题。 与一般代码不同,合约的好坏直接与金钱挂钩 不安全的合约会造成客户的金钱损失,立竿见影。 合约的每一步都需要消耗gas,不讲究的合约会造成执行成本高居不下。 并且,以太坊本身的限制同样也会影响到整个应用系统的设计和选型: 交易确认需要时间:20笔/秒 交易易受外界影响 交易费的高低 流行应用会造成网络拥堵,从影响交易的确认 相比起传统CS编程,与以太坊进行交互要复杂得多: 需要有钱包账户 发出去的交易需要签名 由于整个过程是异步为主,因此交易需要验证 对于区块链本身的定位,同样也会影响设计: 仅仅用作数据共享和防篡改的基础设施? 围绕区块链打造价值网络? Token设计模式 Token引入对于业务本身带来的影响 这一点尤其差异巨大,不单单像传统开发那样仅仅只需要了解用户的业务就可以开足马力前进。Token设计本身需要一定的经济常识,虽说这部分可以由专业背景的人来设计,但对于开发者和架构师而言

区块链开发与区块链应用开发

给你一囗甜甜゛ 提交于 2021-02-11 13:23:44
比特币区块链是用C++开发的没错,以太坊和超级账本使用Go开发的。但是以太坊区块链应用开发用的js(web3.js api方便调用),因为我们只是在公链或联盟链上开发Dapp,所以根本只需要会编写智能合约Solidity语言和能够方便调用web3.js api的JavaScrip语言,即可开发以太坊区块链应用。因为比特币区块链网络是写死的,不需要你开发,以太坊网络,超级账本网络也是,所以区块链开发本质上应该指创造区块链的开发,而直接运用现有链开发应用的应该叫做区块链应用开发,这类开发主要以Js为主,项目模板Truffle Boxs大多Js开发。以上Right? 不全对。有区块链开发,也有基于区块链的应用开发。对于区块链开发,用C++或Go开发;而对于区块链应用开发,通常来说是基于以太坊区块链应用开发,那么可以使用任何能发起http请求的语言开发,因为有请求区块链节点的以太坊rpc,调用rpc是通过http post请求进行的,而web3.js是在rpc的基础上封装起来的,因此如果要开发以太坊区块链应用,最快开发效率的应该是Go,因为Go是为Web后台开发而生,C++虽然也能,但是对于Web开发显得乏力,最好使用三方网络库配合,例如360的evpp框架。以上。 自问自答: https://www.oschina.net/question/3649283_2303218 来源:

DeFi Compound开发REST API

被刻印的时光 ゝ 提交于 2020-10-06 01:30:06
在这个教程中,我们将学习如何为DeFi协议Compound的智能合约创建一个可以通过HTTP访问的API开发接口,并学习如何使用Infura作为以太坊网络和应用之间的桥梁。 Compound是一个基于以太坊的数字资产借贷利率协议。 Infura 是以太坊和IPFS网络API提供商。下面是我们的Web API实现架构图: 用自己熟悉的语言学习 以太坊DApp开发 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、Compound协议的HTTP API设计 在创建访问以太坊智能合约的API之前,我们可以先实现一个可以处理客户端HTTP请求的web应用。 下面是API可能的访问端结点,这些API允许用户从Compound协议存入或赎回加密资产。你可以为Compound协议支持的以太坊ERC-20代币创建更多的访问端结点。 A1、钱包账户ETH余额API :返回钱包中的以太币数量。 GET /wallet-balance/eth/ A2、钱包账户cETH余额API :返回钱包中的cETH代币数量。 GET /wallet-balance/ceth/ A3、Compound协议余额API : 返回钱包已存入Compund协议的以太币数量。 GET /protocol-balance/eth/ A4

区块链软件开发技术

浪尽此生 提交于 2020-10-01 12:31:56
区块链软件开发技术作为一项信息技术越来越引发人们的关注,区块链软件开发技术利用分布式节点共识算法来生成和更新数据。区块链软件开发技术的三大特点是完备可追溯、去中心化和去信用化。区块链技术有多种呈现方式,其中,比特币就是区块链技术的一种呈现方式,那么,区块链软件开发技术主要应用在哪些方面呢?目前在区块链积分兑换、区块链积分商城、交易所搭建、电商系统等方向形成了完善解决方案,经验丰富,可快速搭建。 区块链软件开发技术应用领域: 1.金融领域。 区块链的信息加密技术为金融行业的服务升级提供了很大的帮助。各类金融资产,如股权、债券、基金等数据都能整合到区块链的账本中,成为链上的数字资产。例如,交易所系统开发等应用,区块链技术交易所平台系统开发、区块链合约跟单系统、区块链积分系统搭建、区块链币币交易所开发等,快速搭建。 2.公共服务领域。 公共服务是促进经济增长和社会进步的的重要因素,借助区块链的技术建立不可篡改的数字证明,提高了社会公平性,更好地提升服务水平。 3.物联网领域。 当前的物联网技术还处于完善阶段,依赖中心化的网络架构,设备基本是通过云服务器链接。区块链技术则是发生互动的设备间促进处理和协作的框架,网络上的每个设备都可以作为一个独立的主体运行。 4、数字版权领域 通过区块链技术,可以对作品进行鉴权,证明文字、视频、音频等作品的存在,保证权属的真实、唯一性。 5、保险领域

如何用私钥签名合约调用裸交易?【Web3.js】

戏子无情 提交于 2020-08-10 12:09:48
交易签名是你向区块链证明自己身份的唯一途径,这也是使用以太坊的Web3开发库时需要理清的一个基本概念。在这个教程中,我们讲学习如何使用Web3.js来完成以太坊智能合约调用交易的签名与提交,适用于包括ERC20代币合约在内的所有以太坊合约的调用。 用自己熟悉的语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、以太坊交易签名概述 有两种方法可以对交易进行签名:使用解锁账号或使用私钥。 如果你在用testRPC或Ganache开发,那么应该已经了解其创建的测试账号。这些账号默认都是解锁的,因此你可以直接用它们来签名交易。你也可以使用特殊的Web3提供器例如truffle-hdwallet-provider来生成解锁账号。 更常见的则是以用发起交易的地址对应的私钥来签名交易。考虑到安全性,当你用到私钥时需要格外小心。 2、创建以太坊智能合约调用交易 首先你需要构建一个调用合约方法的交易对象: // 12 word mnemonic for HD Wallet Provider // You can use any provider such as the HttpProvider if you are // signing with private key const

web3.js支持SimpleChain跨链调用

倖福魔咒の 提交于 2020-08-08 07:41:56
SimpleChain的跨链协议已经对外开放很久了,很多应用也已经慢慢支持Simplechain的跨链。最近社区开发者web3.js中集成了Simplechain的跨链接口,开发者只需用 npm 安装包文件。参考原生 RPC接口 的参数,就可以快速上手接入Simplechain跨链。下面是详细流程; 查看RPC接口 首先我们需要熟悉Simplechain的跨链 接口 ,熟悉了接口以后我们就可以直接上手操作。 安装包文件 首先你需要安装node环境,然后使用npm安装跨链包。命令如下: npm install @sipc/web3 安装完以后就可以在你的工程项目面集成跨链。主要的方法有: getCtxQuery , getCtxOwner , getCtxOwnerByPage , getCtxContent , getCtxContentByPage , ctxGet , ctxGetByNumber , ctxQueryDestValue , getCtxTakerByPage , getCtxStats , getPoolStats 。 使用示例 npm库 const rpcUrl = "http://192.168.4.104:8546" const Web3 = require('@sipc/web3') const web3 = new Web3(new Web3

以太坊truffle+ganache合约部署调试及web3.js事件监听过程记录

不羁岁月 提交于 2020-08-06 04:50:03
前期准备 0.系统:Windows10 1.本地hosts文件配置(为了后面truffle download能够成功) 2.ganache安装(为了在truffle console中使用有ETHER的测试账户) 3.node环境配置 1-2教程请参考以下连接: 以太坊truffle框架搭建基础请点此处 3教程请自行百度,检验本地是否有node环境:在cmd中输入node回车 如有则如下图所示👇 truffle + ganache 合约部署 1.新建项目文件夹 并在cmd中cd进入 输入 truffle unbox webpack 出现如下图👇所示输出代表成功 项目文件夹中自动生成下图👇目录,手动将编写好的合约复制粘贴到contracts目录 该目录中有几个自动产生的合约 可以不对他们做任何处理 2.ganache开启 : 打开另一个cmd 输入 ganache-cli 出现如下图👇所示则表示ganache成功打开 可以看到 listening on 后面的主机为 127.0.0.1 ,端口为 8545 3.修改项目文件夹中的 truffle-config.js 文件 使其的 host 和 port 与ganache中 listening on 后面的主机号与端口号一致 如下图所示👇 4.修改项目文件夹下app/src/index.js文件中 http:// 后面的主机号与端口号

如何用web3.js在以太坊区块链上保存数据?

风流意气都作罢 提交于 2020-03-02 11:22:16
虽然有北大博士讲,95%的区块链项目都没有前途,但我们知道区块链还是有它的优势,比如数据的不可篡改性对于版权保护有相当大的意义,而地址的匿名性则有其他潜在的用途。那么,如何将任意数据,比如图像或文本写入以太坊区块链呢?本文将讲解如何使用web3.js实现这一功能并给出相应的实现代码。 实现任意数据上链的核心是 web3.eth.sendTransaction() 方法的使用,我们将借助一个转账交易来完成任意数据上链的任务。在要发送的交易对象中,使用 data 字段就可以传入任意的16进制字符串。 将数据转换为16进制字符串 我们可以使用 web3.toHex() 方法将一个字符串转换为16进制字符串: let data = web3.toHex('你可以将任意数据写入以太坊区块链') 得到的data值为: 0x4f6053ef4ee55c064efb610f6570636e519951654ee5592a574a533a575794fe 。 当然不一定需要使用 web3.toHex() 方法,可以使用任何能够得到16进制串的方法,例如在NodeJS中使用 Buffer : let data = '0x' + Buffer.from('使用Buffer更好处理图像数据').toString('hex') 得到的data值为: