当前位置: 首页 > news >正文

内江市网站建设建网通

内江市网站建设,建网通,网站模版 小清新,景洪网站建设web3.js Web3 JavaScript app APIweb3.js是一个JavaScript API库#xff0c;一般使得DApp在以太坊上运行web3.js通过RPC调用与本节点通信#xff0c;用于任何暴露了RPC层的以太坊节点之间通信web3包含了eth对象#xff0c;即web3.eth#xff08;专门和以太坊区块链交互一般使得DApp在以太坊上运行web3.js通过RPC调用与本节点通信用于任何暴露了RPC层的以太坊节点之间通信web3包含了eth对象即web3.eth专门和以太坊区块链交互和shh对象即web3.shh用于和Whisper交互,消息传递 DEV模式的私有链 在myDevChain文件夹下面搭建了私有链使用命令启动私有链geth --datadir . --networid 15 console 2output.log输入web3即可查看关于web3的相关组件比如bzz、dp操作数据库的一般是mongdb)、eth等等 web3模块加载 新建一个文件夹使用命令cnpm init初始化初始化完成之后会生成一个package.json的包管理文件然后安装指定的web3模块的版本首先需要将web3模块安装在项目中,使用命令如下--save-dev是将环境添加到开发环境的依赖中去 cnpm install web30.20.1 --save-dev 可以使用此刻最新版1.2.6安装完成之后会在文件夹下面生成node_modules文件夹cd进入之后使用ls命令可以看到web3模块使用命令cnpm list web3查看web3的相关内容查看安装web3的版本 cnpm list web3然后创建一个web3实例设置一个“provider”provider是指服务的启动者使用provider启动接口服务为了保证MetaMask设置好的provider不被覆盖掉在引入web3之前需要进行环境检查以v0.20.1为例 if(typedef web3 ! undefined){web3 new Web3(web3.currentProvider); }else{web3 new Web3(new Web3.providers.HttpProvider(http://localhost:8545)); } 异步回调callback 使用eth.blocknumber()返回区块的高度使用eth.getBlock(x),返回高度为x的区块的具体内容 web3.js设计的最初目的是为了和本地的RPC共同使用所以默认情况下发送的是同步的HTTP请求(同步容易堵塞一般都是采用异步的方式)如果发送的是异步的请求可以在函数的最后一个参数位置上传入一个回调函数。回调函数是可选的optional回调风格一般采用“错误优先”的方式其中function为回调函数 web3.eth.getBlock(48,function(error,result)){if(!error)console.log(JSON.stringify(result));elseconsole.error(error); } 回调Promise事件V1.0.0 应用二进制接口ABI web3.js通过以太坊智能合约的json接口Application Binary InterfaceABI创建一个JavaScript对象用来在js代码中描述函数functions type函数类型默认是“function”也可能是“constructor”constant、payable和stateMutability:函数的状态是可变性inputs、outputs函数输入、函数输出参数描述列表事件events type类型总是“event”inputs输入对象的列表包括name、type和indexed使用 在web3文件夹下面创建合约文件夹mkdir contractcd contract,进入合约文件夹下touch Coin.sol创建合约将remix中的合约拷贝进去执行编译 solcjs --abi Coin.sol就会在当前文件夹下面生成一个以abi结尾的文件查看这个以abi结尾的文件具体内容如下主要包含两类内容事件和函数 [{constant:true,inputs:[{name:,type:address}],name:balances,outputs:[{name:,type:uint256}],payable:false,stateMutability:view,type:function},{constant:true,inputs:[],name:miner,outputs:[{name:,type:address}],payable:false,stateMutability:view,type:function},{constant:false,inputs:[{name:receiver,type:address},{name:amount,type:uint256}],name:mint,outputs:[],payable:false,stateMutability:nonpayable,type:function},{constant:false,inputs:[{name:receiver,type:address},{name:amount,type:uint256}],name:send,outputs:[],payable:false,stateMutability:nonpayable,type:function},{inputs:[],payable:false,stateMutability:nonpayable,type:constructor},{anonymous:false,inputs:[{indexed:false,name:from,type:address},{indexed:false,name:to,type:address},{indexed:false,name:amount,type:uint256}],name:Sent,type:event} ] solcjs --bin Coin.sol生成bin文件bin文件就是提交合约最后部署的文件输入node打开控制台也就是js执行环境  操作引入web3 先在本地启动一个区块链私有链输入node进入 node.js页面输入 var web3 require(web3)输入web3输入var web3 new Web3(new Web3.providers.HttpProvider(http://localhost:8545))输入web3可以查看已经创建好了web3输入web3.isConnected查看是否连接区块链如果返回为false需要在myDevChain文件夹下面启动私有区块链并且开启rpc服务输入web3.version查看web3的版本 批处理请求batch requests 批处理请求允许将请求排序然后一起处理注意批量请求不会更快。实际上在某些情况下一次性发出多个请求反而会更快因为请求是采用异步处理的方式进行的批处理请求主要确保请求的顺序并且采用串行处理的方式 大数处理big numbers JavaScript默认处理的数字精确度比较小所以web3.js会自动添加一个依赖库文件BigNumber专门用于处理大数据对于数值应该习惯将它转化为BigNumber对象来处理 BigNumber.tostring(10)对小数只保留20位浮点精确度。所以推荐做法是内部使用wei来显示余额大整数只有需要给用户看的时候才转化为ether或者其他单位例子 var BigNumber require(bignumber.js) var balance new BigNumber(1231231231123325647673565363777373733833222); balance.plus(21).tostring(10);//或者直接输入balance就可以tostring位数转化进制//s表示正负数1表示正数-1表示负数 //e表示科学技法中的10的位数 //c数组每14位切割一次定义成数组 使用balance.tostring将所有的数字拼接成一个字符串输出也可以在在中加入数字表示进制的转化但是如果改成浮点数会造成精度的缺失 常用的API基本信息查询 不同web3版本之间使用的差异web3.js V1.2.6版本参考链接初始完provider还可以重新设定provider输入geth --help 在API AND CONSOLE OPTIONS选项下面可以看到其余的连接方式除了Http其余的连接方式--ws8546端口推荐、ipcdisable方式进程之间调用 使用命令启动区块链之后会在当前目录下面生成geth.ipc文件。命令为 geth --datadir /Users/chy/Desktop/myeth/chaindata --rpc  --networkid 6666 console 2output.log此处的netwokid是在gensis.json里面写死的如果忘记可以使用cat gensis.json查看chainid后面的内容 web3通用工具方法 以太单位转换 web3.fromWei   web3.toWei数据类型转换 web3.toString  web3.toDecimal   web3.toBigNumber字符编码转换 web3.toHex  web3.toAscii  web3.toUtf8  web3.fromUtf8地址相关 web3.isAddress web3.toChecksumAddress web3.eth 账户相关 如果已经启动了一个监听器再次定义新的监听器需要将先前的监听器干掉使用命令filter.stopWatching()命令 注意 ctrlL清屏web3不同的版本之间命令发生了变化。需要看官方的文档 相关命令 web3.eth.getBlock(2) //2是区块的位置会显示相关的信息但是其包含的交易只显示哈希值web3.eth.getBlock(2true) //2是区块的位置会显示相关的更加具体的信息包括其中交易的哈希值
http://wiki.neutronadmin.com/news/174337/

相关文章:

  • 深圳做模板网站的公司网站网页直播怎么做
  • 专门做恐怖电影网站关于志愿者网站开发的论文
  • 找南昌网站开发公司电话wordpress主题文件夹在哪
  • 移动网站建站网站流量报表
  • 京东联盟怎么做网站无烟锅网站规划与建设
  • 电商网站策划网站后台管理要求
  • 网站开发的流程建设摩托车公司官方网站
  • 英文网站建设网站站群宝塔批量建站
  • 网站开发设计文案书店网站策划书
  • 怎样将视频放在网站里做网站系统建设招标公告
  • 那种非法网站怎么做的网站域名备案查询系统
  • 酒店网站开发合同有网络网站打不开怎么回事
  • 巨鹿网站建设公司很简单的做设计的网站
  • 企业网站的建设包括页面模板在公号什么地方显示
  • 网站排名如何稳定长沙 网站建设公司
  • 女人能做网站开发吗vs2017手机网站开发
  • 如何查找高权重网站济南建设局
  • 做电影网站服务器需求比较好网站搭建公司
  • 被攻击网站怎么做自己网站里的资讯
  • 宁波高质量品牌网站设计厂家app开发公司图片
  • 电子商务网站的建设心得体会金华高端网站建设公司
  • 广州高端模板网站在华图做网站编辑
  • 企业网站主页设计wordpress 默认编辑器
  • 景区门户网站建设江苏建信建设集团网站
  • 成都建设局网站网站性能策划
  • asp网站安装c qq 互联网站开发代码
  • 资讯网站优化排名利用网络挣钱的路子
  • 网站建设作品2016 网站建设需求
  • 徐州百度网站快速优化海报在线设计生成器
  • 怎么提高网站建设水平成都做网站建设公司