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

.net开发大型网站开发oa系统审批流程

.net开发大型网站开发,oa系统审批流程,seo搜索优化是什么意思,公司做网站百度还是阿里创建一个以太坊钱包有多种方式#xff0c;一般情况下可以通过geth、EtherumWallet等客户端。对于前端#xff0c;可以使用插件MetaMask进行创建。这几种方式技术实现虽然不同#xff0c;但底层原理是一致的。本文主要介绍如何通过web3j架构创建一个以太坊的冷钱包#xff0…创建一个以太坊钱包有多种方式一般情况下可以通过geth、EtherumWallet等客户端。对于前端可以使用插件MetaMask进行创建。这几种方式技术实现虽然不同但底层原理是一致的。本文主要介绍如何通过web3j架构创建一个以太坊的冷钱包从而实现将这一过程部署在服务端或者android端。 文中涉及到的技术栈有 Web3j 轻量级java库用于连接以太坊客户端或节点 Infura :以太坊基础设施用于访问以太坊主网络或测试网络 Java编程语言 1.Web3j的安装 无论是java工程还是android工程web3j都提供了maven和grade 两种依赖方式 java工程manen依赖dependencygroupIdorg.web3j/groupIdartifactIdcore/artifactIdversion3.3.1/version /dependency 复制代码gradle依赖compile (org.web3j:core:3.3.1) 复制代码android工程maven依赖dependencygroupIdorg.web3j/groupIdartifactIdcore/artifactIdversion3.3.1-android/version /dependency 复制代码gradle依赖compile (org.web3j:core:3.3.1-android) 复制代码值得注意的是目前的web3j对于高版本JDK存在不兼容的问题如果出现如下类似的问题直接更换JDK为version 8即可。 Could not determine Java version using executable /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/java. 2.关于Infura 以太坊的客户端实现有多种但很多都需要在本地同步所有的节点数据而占用大量硬盘存储空间并且需要消耗同步的时间。Infura就是提供一种中心化的服务通过web3.js或者web3j使前端或服务端能便捷的访问以太坊所有节点。可以理解为一种以太坊客户端的云端版本。使用过程需要注册一个专属的访问token。本文中使用的客户端都是Infura提供的Rinkeby测试网络。 3.新建钱包文件keyfile 在以太坊中钱包wallet和账户account是两个不同的概念。账户是以太坊的核心由一对秘钥组成-公钥和私钥。账户可以分为两种外部账户和合约账户。而钱包是指保存 地址、公钥、私钥的文件或其他机构每个钱包文件至少包含一个账户。创建钱包的同时也是创建一个以太坊账户的过程不同的客户端创建钱包的方式不一致但原理相同有关钱包是具体是如何生成的可以查看另外这篇文章。 新建一个java工程初始化gradle或者maven依赖web3j新建Application.java文件设置程序入口main函数调用钱包工具类生成钱包文件/*************创建一个钱包文件**************/ private void creatAccount() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException, CipherException, IOException {String walletFileName0;//文件名String walletFilePath0/Users/yepeng/MyGitHub/z_wallet_temp;//钱包文件保持路径请替换位自己的某文件夹路径walletFileName0 WalletUtils.generateNewWalletFile(123456, new File(walletFilePath0), false);//WalletUtils.generateFullNewWalletFile(password1,new File(walleFilePath1));//WalletUtils.generateLightNewWalletFile(password2,new File(walleFilePath2));log.info(walletName: walletFileName0); } 复制代码钱包构建的过程中需要输入的三个参数分别设置钱包的密码、保存路径、以及是否轻量级钱包。 执行创建函数后会自动在指定路径生成一个json 文件即钱包keyfiles。 钱包文件结构 cipher加密算法AES算法用于加密以太坊私钥cipherparamscipher算法需要的参数参数iv是aes-128-ctr加密算法需要的初始化向量ciphertext加密后的密文aes-128-ctr函数的加密输入密文kdf秘钥生成函数用于使用密码加密keystore文件kdfparamskdf算法所需要的参数mac验证密码的编码生成钱包的逆向过程 为加载钱包。 4.加载钱包文件 加载钱包的过程需要提供钱包文件和密码 /********加载钱包文件**********/ private void loadWallet() throws IOException, CipherException {String walleFilePath/Users/yepeng/MyGitHub/z_wallet_temp/UTC--2018-04-10T02-51-24.815000000Z--12571f46ec3f81f7ebe79112be5883194d683787.json;String passWord123456;credentials WalletUtils.loadCredentials(passWord, walleFilePath);String address credentials.getAddress();BigInteger publicKey credentials.getEcKeyPair().getPublicKey();BigInteger privateKey credentials.getEcKeyPair().getPrivateKey();log.info(addressaddress);log.info(public keypublicKey);log.info(private keyprivateKey);} 复制代码函数运行的结果 通过工具类 WalletUtols的函数 loadCredentials()会返回一个对象Credentials,这个对象即包含了钱包文件的所有信息包括地址、秘钥对。 至此钱包的创建和加载已经完成但这一过程全部发生在本地并未同步到以太坊区块链。查询地址余额前需要连接以太坊结点。 5.构建Web3j实体连接以太坊结点 web3j是连接java端与以太坊的桥梁广播交易查询账户都需要通过web3j实体。web3j支持通过http进行构建而且兼容了infura。在本文中使用的是infura的测试网络Rinkeby。 /*******连接以太坊客户端**************/ private void conectETHclient() throws IOException {//连接方式1使用infura 提供的客户端web3j Web3j.build(new HttpService(https://rinkeby.infura.io/zmd7VgRt9go0x6qlJ2Mk));// TODO: 2018/4/10 token更改为自己的//连接方式2使用本地客户端//web3j Web3j.build(new HttpService(127.0.0.1:7545));//测试是否连接成功String web3ClientVersion web3j.web3ClientVersion().send().getWeb3ClientVersion();log.info(version web3ClientVersion); } 复制代码web3j实体构建完成后可以打印出版本号以测试是否连接成功。如果成功就可以做其他的事情了。值得注意的是web3j采用的是RxJava的设计所以许多函数的返回值是 Request这个对象有两种执行方式异步和同步即send()和sendAsyn()。 6.查询账户余额 查询账户的余额的方式 /***********查询指定地址的余额***********/ private void getBlanceOf() throws IOException {if (web3j null) return;String address 0x41F1dcbC0794BAD5e94c6881E7c04e4F98908a87;//等待查询余额的地址//第二个参数区块的参数建议选最新区块EthGetBalance balance web3j.ethGetBalance(address, DefaultBlockParameter.valueOf(latest)).send();//格式转化 wei-etherString blanceETH Convert.fromWei(balance.getBalance().toString(), Convert.Unit.ETHER).toPlainString().concat( ether);log.info(blanceETH); } 复制代码其中核心方法 web3j.ethGetBalance(address, defaultBlockParameter 中的第二个参数比较特殊指默认的区块参数。当请求余额的方法作用与以太坊的区块网络时这个参数决定了查询区块的高度。 HEX String - 一个整数块号String earliest 为最早/起源块String latest - 为最新的采矿块String pending - 待处理状态/交易一般情况下选择“latest”即可。 以太坊中如果没有特殊标示数字的单位都是小数点后18位因此查询账户余额有必要将wei转化成ether。 6.使用钱包进行转账 作为一个钱包除了保存账户资产外最重要的就是转账或交易了利用web3j可以便捷的实现eth的转移。 / /****************交易*****************/private void transto() throws Exception {if (web3j null) return;if (credentials null) return;//开始发送0.01 eth到指定地址String address_to 0x41F1dcbC0794BAD5e94c6881E7c04e4F98908a87;TransactionReceipt send Transfer.sendFunds(web3j, credentials, address_to, BigDecimal.ONE, Convert.Unit.FINNEY).send();log.info(Transaction complete:);log.info(trans hash send.getTransactionHash());log.info(from : send.getFrom());log.info(to: send.getTo());log.info(gas used send.getGasUsed());log.info(status: send.getStatus());} 复制代码核心方法需要提供4个参数 web3j实体Credentials 源账户address 转出地址value 数量uint 单位等待片刻后会返回转账结果 可以看到交易hash、转入转出地址、gas消耗等信息。同时可以在etherscan-rinkeby上进行查看本次交易详情 7.总结 上面的代码已经完成了一个以太坊钱包所需的所有基本功能包括创建、加载、转账、查询。本文中采用的网络是infura提供的Rinkeby测试网络创建的钱包地址为 0x12571F46Ec3f81F7EbE79112Be5883194d683787。 在具体的业务场景中只要将测试网络更换为以太坊主网络即可。 源码地址 github.com/initsysctrl… 转载于:https://juejin.im/post/5ba9a007f265da0a8b572530
http://wiki.neutronadmin.com/news/218933/

相关文章:

  • 南通网站建设排名公司哪家好wordpress tag__not_in
  • 国际网站怎么开通高德地图是国产软件吗
  • 域名查询站长工具定制app网站
  • 网站建设入账网站建设培训公司
  • 网站域名不备案要证书有啥用百度收录提交网址
  • 购买网站空间多少钱淄博网络推广哪家好
  • 网站制作服务平台crm销售管理系统功能
  • 烟台哪里做网站好网站设计重要性
  • Wordpress动图主题顺德搜索seo网络推广
  • 东莞部门网站建设wordpress手机下浮动
  • 徐州企业建站模板手机网站自助建站源码
  • 网站报错500最近重大新闻头条
  • 移商网站建设wordpress默认的后台账号密码
  • 网站链群怎么做企业所得税税率5%
  • 常州微信网站建设市场狠狠做最新网站
  • 专门做优选的网站做彩票网站违法吗
  • 网站开发 在html标记后出现乱码 查看源文件显示是问好娄底市建设局网站
  • 网站标签是什么阿里巴巴网站网络营销的平台
  • wordpress网站如何播放视频播放器qifeiye做的网站如何
  • jquery网站后台模板拖鞋设计网站推荐
  • 建设电影网站点击播放是乱页的几台服务器做集群网站
  • 某服装公司网站建设论文广东外贸网站建设企业
  • 极构网站建设工作室汕头公司建站模板
  • 企业网站建设基本标准青州网站建设
  • 邯郸做网站的公司哪家好网页设计需要什么专业
  • 做电影类网站收入怎么样国内知名展馆设计公司排名
  • 网站开发环境集成安装包宁波电商网站建设开发
  • 做微商如何网站推广第三方检测机构
  • 做网站让用seo刷新是哪个键WordPress如何添加表情
  • 网站app用什么语言开发的网页设计与制作的公司