-
以太坊代币开发生产网络/测试网络/私有网络
2017-11-11 10:43:35要理解以太坊代币 PrivateNetwork 先要理解以太坊代币的两种官方网络,目前以太坊代币官方提供了两种网络: 生产环境网络 测试网络 TestNet 下面将分别简单讲解下这两种网络。 以太坊代币生产网络 以太...区块链爱好者(QQ:53016353)
要理解以太坊代币 PrivateNetwork 先要理解以太坊代币的两种官方网络,目前以太坊代币官方提供了两种网络:
生产环境网络
测试网络 TestNet
下面将分别简单讲解下这两种网络。
以太坊代币生产网络
以太坊代币的生产网络顾名思义,也就是产生真正有价值的 的以太币的网络。 目前生产网络目前已经生成了300万以上的区块,还在持续生成中。挖矿挖出来的每个以台币在10美金以上。 生产环境下的以太坊代币状态时如此的(截图自2017-02-17)
p1
生产环境网络优点
全球化的,部署在Internet环境上的,
智能合约的代码,执行,区块的调用,都可以清晰的查看到。
部署在生产环境上的智能合约,全世界任何应用都可以调用
缺点:
任何合约执行都会消耗真实的以太币,也就是真实的现金。不适合开发、调试和测试,
所有节点是全球化的,速度较慢
且对于部分商业应用来说,只需要一部分节点,例如分布式部署的10-20台服务器即可。而不需要遍布全球的网络。
以太坊代币测试网络 TestNet
以太坊代币的测试网络也是官方提供的,顾名思义就是专供用户来开发、调试和测试的。 上面的合约执行不消耗真实的以太币。也就是不花钱
所以如果开发简单的智能合约的话,用测试网络也就足够了,用户可以把更多的精力集中在智能合约的编写上。
但因为网络是官方提供的,因此对于以太坊代币技术的底层实现、Geth的各种参数接口、整个以太坊代币的技术真实性能的理解就会弱很多。所以从开发的角度来说,一个更好的选择是Private Network,可以从技术的底层去深入理解以太坊代币。
测试环境网络优点
合约执行不消耗真实货币
全球化的,部署在Internet环境上的,
智能合约的代码,执行,区块的调用,都可以清晰的查看到。
部署在测试环境上的智能合约,全世界任何应用都可以调用
缺点:
所有节点是全球化的,速度较慢
测试网络不可能作为商业应用的实际落地环境
以太坊代币私有网络 PrivateNetwork
以太坊代币的私有网络,顾名思义就是由用户自己通过Geth创建的私有网络,是一个非常适合开发、调试和测试的网络
优点
方便开发者深入理解以太坊代币的技术底层
因为节点相对较少,速度较快
用户可以随时创建,随时销毁,随时重建一个以太坊代币网络
随意的增加节点数目,或者删除节点,
既可以在服务器上建立,也可以在自己的windows或者Mac机器上建立,
甚至一台机器可以建立多个节点,在一台机器上实现多节点的私有网络。
缺点
因为不是全球化的,只有在私有网络内的节点才能查看智能合约的执行、调用等。
下一章讲解:实战搭建私有网络!
在本章中我们将实战如何使用Geth,如何搭建以太坊代币的私有网络。
之前说过Geth是三种实现以太坊代币协议的工具之一,由于Geth是官方推崇的以及个人精力有限,对于另外两种工具的搭建私有网络,请参考网上资料。
下面的Geth实战,在MacBook上实现,对于Windows方面,比较类似。
Step 1: 建立目录和genesis.json
在命令行模式创建一个目录,例如tmpPrivate
p2
创建文件genesis.json, 并填入如下内容。
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x80000000",
"difficulty": "0x1",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": { }
}
用户可以vim,也可以用其他编辑器如sublime等,个人推荐使用Atom
Atom 官网地址: https://atom.io/
Atom 是一个由谷歌支持发布的文本编辑器, 一个你可以自定义做任何事情的现代编辑器,后面涉及文件和代码演示会主要在Atom上执行。
创建完成后,在Atom中,本文件夹下应该只有一个genesis.json
p3
Step 2: 执行命令,创建创世区块
切换回命令行,执行命令,制造创世区块
geth --datadir "./" init genesis.json
执行结果如下:
p4
这时候可以注意一下,此时当前目录下面会新增出两个文件夹geth和keystore
geth中保存的是区块链的相关数据
keystore中保存的是该链条中的用户信息
此时从Atom中看到的目录结构是这样的:
p5
Step 3:创建自己的私有链条
执行一条最简单的geth命令,来创建自己的私有链条
geth --datadir "./" --nodiscover console 2>>geth.log
geth的参数项目很多,有兴趣的可以打geth –help 来获得详细信息,我们也会在之后的章节中对关键参数项进行说明。
此时的命令行应该是这样的:
p6
Step 4:在自己的私有链条上创建用户
输入命令eth.accounts, 我们会发现返回值为[]
这是因为此时虽然以太坊代币的私有链已经被创造出来,但还没有任何账户。
输入命令personal.newAccount("xxx"), 该命令将创造一个新的用户,该用户的密码是xxx. 当然用户也可以将xxx 改为123,或者123456,或者任意密码
再次输入命令 eth.accounts, 我们会发现一个新的用户被创建了出来,这就代表我们已经创建了一个账户,重复personal.newAccount() & eth.accounts 我们可以创建若干个账户出来
整个命令截图如下:
p7
Step 5: 输出区块链的Log
在Step 3中,我们执行的代码
geth --datadir "./" --nodiscover console 2>>geth.log
其中的代码 console 2>> geth.log 代表将控制台的一部分输出,输出到文件geth.log上去。
打开另一个终端,找到geth.log的所在目录,执行命令 tail -f geth.log 从而持续的输出以太坊代币的日志
整个过程如下图所示:
p8
Step 6: 最重要的一步来了,开始挖矿!
在命令行中执行命令 miner.start(), 开始在我们的区块链上进行挖矿
p9
此时Geth.log的输出应该是这样的
p10
一直等到100%。这个以太坊代币私有链就会正式启动,并持续不断的生成出以太坊代币来。
注意点:
1. 挖矿挖到的ether币会默认保在第一个账户中,即eth.acccounts[0]中。
2. 挖矿是执行智能合约的基础。如果停止挖矿的话,不仅以太币会停止生成,所有智能合约的调用也会不起作用。
3. 如果真的要停止挖矿,可以执行命令miner.stop()来停止挖矿
4. 按上面的命令,应该是可以实现以太坊代币挖矿的。如果不行的话,有可能就是之前有存在的链,此时应该删除之前的数据。在Mac下即删除~/.ethash文件夹和里面的文件即可
Step 7: 最终当挖矿启动的时候的日志是这样的
p11
Step 8: 挖矿启动后,查看主账户的以太币数量
acc0 = eth.accounts[0]
eth.getBalance(acc0)
结果只要不为0,那就说明挖矿成功! -
开发者快速入门以太坊代币开发底层构架
2017-11-09 09:24:14区块链爱好者(QQ:53016353) 部署一个开发者环境并运行一个简单例子。...以太坊代币将用于创建包含三个Peer节点的联盟链、一个独立的Orderer和一个证书颁发机构(CA)。为了加快部署进度,预先生成了基区块链爱好者(QQ:53016353)
部署一个开发者环境并运行一个简单例子。文档包括创建和加入通道(账本)、客户端认证以及部署和调用智能合约。CLI将用于创建和加入通道(账本),NodeJS SDK将用于客户端身份验证和使用账本的智能合约功能。
以太坊代币将用于创建包含三个Peer节点的联盟链、一个独立的Orderer和一个证书颁发机构(CA)。为了加快部署进度,预先生成了基于标准PKI实现的加密要素并打包进fabpre.tar.gz。证书颁发机构(CA)负责签发、撤销和维护代表一个企业的加密要素,这些要素提供给客户端(Node SDK)用于身份认证。
Fabric网络将通过执行以太坊代币自动生成,创建通道和加入通道的API将会自动被调用;同时,开发者也可以通过手动步骤生成自己的Fabric网络和通道(账本)或直接使用开发者模式进行应用开发。
一、前置条件和系统配置
· Docker - v1.12 及更高版本
· Docker Compose - v1.8 及更高版本
· Node.js - v2.1.8 及更高版本
yum –y install docker.x86_64
yum –y install python-pip
pip install docker-compose
yum –y install npm
验证npm安装:
npm install npm@latest
查看npm版本:
npm -v
二、下载源代码并创建Fabric网络
· 下载并安装 Curl 工具
· 创建 Fabric 工程和项目目录.
mkdir -p <workspace>
cd<workspace>
然后, 执行如下代码
curl -L https://raw.githubusercontent.com/voodoo12345/polaris/master/fabpre.tar.gz -o fabpre.tar.gz 2> /dev/null; tar -xvf fabpre.tar.gz
执行完这条命令,会下载并解压缩部署Fabric网络的相关组件 ,包括Docker Compose 脚本, 通道创建/加入脚本, 认证使用的加密要素等.
你当前目录看上去是这样的:
ls
ccenv channel_test.sh docker-compose.yml fabpre.tar.gz src tmp
三、使用 Docker
你不需要手工拖取Docker镜像,通过执行docker-compose命令, fabric-peer, fabric-orderer, fabric-ca和 cli 都会自动下载、解压缩相关的镜像。
通道相关的命令:
“create” –在 orderer上创建并命名一个通道,返回一个通道的创世区块,生成的创世块以通道的名字命名
“join” – 使用 create 命令生成的创世区块向Peer节点发出加入通道的请求
四、使用Docker 创建Fabric网络 & 创建/加入通道(账本)
1)确保 hyperledger/fabric-ccenv 镜像的标签是 latest:
执行docker-compose build
2)创建Fabric网络,创建通道(正本), 将Peer节点加入通道:
执行docker-compose up
3)查看你的容器:
docker ps
终端应该显示有6个独立运行的容器(3 个peer节点, 1个 独立的 orderer, CLI 和 CA). 嵌入在docker-compose.yml里的channel_test.sh会在CLI容器里执行创建通道和加入通道命令。执行结束,应该只有一个Fabric网络和一个通道(账本),通道包含三个节点peer0,Peer1,Peer2。
4)确保通道已成功创建,并且节点都成功加入:
执行docker exec -it cli sh
5)查看通道创建/节点加入的结果:
cat results.txt
屏幕显示的结果如下:
6)验证成功创建了创世块,执行如下命令:
ls -ltr myc1.block
五、下载演示程序和SDK 模块
· 创建案例程序目录:
mkdir –p test
· 安装node 模块:
npm install
现在你已经拥有了全部Fabric网络运行需要的组件.
六、使用 node SDK 注册/登录一个用户并执行部署/调用/查询操作
这个案例程序将通过Node SDK &APIs以及预先准备的CA认证所需的加密要素来实现客户端的登记、注册和登录。一旦客户端完成身份验证,就可以执行程序包含的智能合约功能(部署、调用、查询)。
1a)注册/登录 & 部署智能合约 (Linux or OSX):
GOPATH=$PWD node deploy.js
1b)注册/登录& 部署智能合约 (Windows):
SET GOPATH=%cd%
node deploy.js
2)执行一个调用操作. 从 “a” 转移一定资产到 “b”:
node invoke.js
3)查询键值 “a”:
node query.js
你会在终端上得到一个数值为200的结果
你可以浏览NodeJS SDK 和APIs的文档来实现更多功能。
七、手工创建和加入通道
为了在CLI容器里手动执行创建通道和加入通道API,我们需要编辑Docker Compose文件。用任意文本编辑器打开docker-compose.yml注释掉channel_test.sh脚本,编辑操作如下:
cli:
container_name: cli
# command: sh -c './channel_test.sh; sleep 1000'
# command: /bin/sh
1)进入cli 容器:
docker exec -it cli sh
2)发送createChannel API 给 Orderer:
CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc1
3)发送joinchannel API 给 Peer0:
CreateChannel执行完毕将返回一个创世区块(myc1.block),然后你可以执行加入通道的指令,把Genesis block作为参数发送joinchannel API给 peer0。
注:通道的定义都保存在创世块内:
CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer0:7051 peer channel join -b myc1.block
4)如果想要加入其它节点,只需重新发送上述命令给peer1或Peer2即可
CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer1:7051 peer channel join -b myc1.block
一旦全部Peer节点都加入了通道,你可以查询账本而无需在每个节点都部署智能合约。
八、使用命令行工具部署/调用/查询智能合约
1)运行部署命令:这个命令是在通道myc1上的Peer节点0上部署一个名叫MYCC的智能合约。构造函数把A和B的值分别初始化为100和200。
CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode deploy -C myc1 -n mycc -p http://github.com/hyperledger/fabric/examples -c '{"Args":["init","a","100","b","200"]}'
2)运行调用命令:这个命令是从A移动10个单位到B
CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode invoke -C myc1 -n mycc -c '{"function":"invoke","Args":["move","a","b","10"]}'
3)运行查询命令:按照预期,查询a的返回值应该是90
CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode query -C myc1 -n mycc -c '{"function":"invoke","Args":["query","a"]}'
你可以在任何时间发出exit命令退出CLI容器。
九、故障排除
1)如果已有容器在运行,执行docker-compose命令可能会收到报错,显示端口已被占用。如果发生这种情况,则需要杀死使用该端口的容器。
2)如果发现缺失部分文件,请确保Curl命令成功执行,并确保已经cd到了代码下载的目录。
3)如果你是用自动化步骤创建通道/加入通道的(即没有在yml文件注释channel_test.sh步骤),且通道myc1和创世区块myc1.block已经成功创建。这时,如果你想在CLI容器中手工执行后续的步骤:
CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc1
你可能看到类似的错误信息如下:
UTC [msp] Sign -> DEBU 064 Sign: digest: 5ABA6805B3CDBAF16C6D0DCD6DC439F92793D55C82DB130206E35791BCF18E5F
Error: Got unexpected status: BAD_REQUEST
Usage:
peer channel create [flags]
这是因为你正试图创建一个重名的通道(myc1),这个通道已经存在!有两种解决方法,1)我们可以使用一个不同的通道名称来重新创建通道,例如:
CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc2
然后,执行加入通道指令:
CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer0:7051 peer channel join -b myc2.block
如果您选择创建一个新的通道,需要在config.json文件编辑“channelid”参数来匹配新的通道名称,例如:
{
"chainName":"fabric-client1",
"chaincodeID":"mycc",
"channelID":"myc2",
"goPath":"../../test/fixtures",
"chaincodePath":"github.com/example_cc",
2)如果你想继续使用原有的通道名称(myc1),可以删除所有的容器然后参照手动创建和加入通道部分的步骤继续执行。
十、常用docker命令:
1)删除一个容器
docker rm <containerID>
2)强制删除一个容器
docker rm -f <containerID>
3)强制删除全部容器
docker rm -f $(docker ps -aq)
4)删除一个镜像:
docker rmi <imageID>
5)强制删除一个镜像:
docker rmi -f <imageID>
6)强制删除全部镜像
docker rmi -f $(docker images -q) -
android web3j 代币查询_wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账
2021-01-26 14:42:08wallet-eth-androidwallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账(bip39、bip32、bip44、web3j)生成钱包地址// 生成钱包地址Wallet wallet = WalletManager.generateWalletAddress();// 根据助记词获取地址...wallet-eth-android
wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账(bip39、bip32、bip44、web3j)
生成钱包地址
// 生成钱包地址
Wallet wallet = WalletManager.generateWalletAddress();
// 根据助记词获取地址
WalletManager.generateAddress(wallet.getMnemonic());
// 通过助记词获取私钥
WalletManager.generatePrivateKey(wallet.getMnemonic());
// 生成钱包keystore
Wallet wallet1 = WalletManager.generateWalletKeystore("123456", wallet.getMnemonic());
// 通过keystore 获取私钥
WalletManager.generatePrivateKey("123456", wallet1.getKeystore());
助记词:glare pave fatal catch cake large mad exit any hood expose neither
地址: 0x3a5c0fe05f7515a8283b1d2a1a241cbabafbf094
keystore: {"address":"3a5c0fe05f7515a8283b1d2a1a241cbabafbf094","id":"13b913ac-2d19-4473-8515-d6c54fe9bad8","version":3,"crypto":{"cipher":"aes-128-ctr","ciphertext":"66f392a77aff1f0c341519561c9eb5857ef44255b35d1781f2e3fd59a65e624f","cipherparams":{"iv":"dc81d0a5b103137c0b2f728a54ce6c17"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"7dfa3c3de3cacfab8c93bd1790dce2476696222f10153913a7f0632b4026f914"},"mac":"2419dbdd294b4fe0bde158de2fefb218237b66316c0523911c18dad0828669f8"}}
转账
String hash = WalletManager.sendTransactionByMnemonic("0x8c10a04b0ce0414b089efe89e311f75fbf964563",
"volume final loyal match glare era olive size craft deposit palm label",
"0xe94791399f3a0e6d9ac23e64102005efef1bb424", String.valueOf(0.1));
// WalletManager.sendTransactionByMnemonicAsync("0x8c10a04b0ce0414b089efe89e311f75fbf964563",
// "volume final loyal match glare era olive size craft deposit palm label",
// "0xe94791399f3a0e6d9ac23e64102005efef1bb424", String.valueOf(0.1), null);
相关查询
// 获取版本信息
WalletManager.getClientVersion();
// ethBalance 以太坊余额
WalletManager.getEthBalance(address);
// noce
WalletManager.getNonce(address);
// name
WalletManager.getTokenName(address);
// symbol
WalletManager.getTokenSymbol(address);
// decimals
WalletManager.getTokenDecimals(address);
// totalsupply
WalletManager.getTokenTotalSupply(address);
// token balance 代币余额
WalletManager.getTokenBalance(address);
-
以太坊代币代码相关解释
2018-09-05 21:34:50第一行pramga solidity ^0.0.4 声明合约源码适用的solidity编译器版本,^ 0.0.4代表次源码使用solidity...address public minter,声明一个地址类型的状态变量,地址是20个字节的账户地址,public关键字会自动生成一...第一行pramga solidity ^0.0.4 声明合约源码适用的solidity编译器版本,^ 0.0.4代表次源码使用solidity0.0.4或以上的版本编写,但是不适用包括0.5.0及以上的版本,这可以确保合约在先谷底固定的编译器版本上实现编译的稳定性。
address public minter,声明一个地址类型的状态变量,地址是20个字节的账户地址,public关键字会自动生成一个对状态变量的外部访问方法,其他合约就可以访问这个状态变量
mapping (address =>uint ) public balances 中mapping是一个更加复杂的类型,维护一组键值对。由于无法枚举或循环获取key或value,使用时需要记录加入mapping的key,并使用key获取对应的值。
event send(address from ,address to ,uint amount)由交易执行的方法触发,客户端可以监听事件,当时间发生时,进行回调处理。例如,时间监听和回调的处理逻辑如下:
Coin.Sent().watch({},”,function(err,result)){
if(!err){
console.log(“Coin transfer :”+result.args.amount+ “coins werer sent from “+ result.args.from +” to “+result.args.to+”.”);
console.log(“Balance now:\n”+”Senser:”+Coin.balances.call(result.args.from)+”receiver:”+Coin.balances.call(result.args.to));
}
}functiiion Coin() 是合约的构造函数,构造器函数在合约创建时执行,创建者发送合约创构建交易,并设定构造器的参数。此处,构造器的逻辑是把合约创建者地址作为铸币者,只有铸币者才可以铸造代币。此处的msg(还有tx和block)是内置的全局对象变量,可以通过对象的属性访问区块链相关的值。
function mint()可以接受有合约创建者发起的铸币交易,如果不是合约创建者发起的mint交易,则忽略。
function send()可以由任何账户发起调用,只要其拥有的余额足够支付交易中指定的金额。
Sent(msg。sender,receiver,amout)可以在执行完转账后触发一个event通知,所有监听这个event的客户端 都可以即使得到事件通知,并执行相关的回调函数。 -
区块链以太坊代币开发新技术分层确定性钱包Wallet介绍
2018-07-20 17:22:55区块链以太坊代币开发新技术分层确定性钱包Wallet介绍 钱包是用于发送和接受代币的客户端,就像我们使用邮箱来管理自己的邮件,我们需要一个客户端来管理自己的代币。钱包的本质是保管私钥的工具,私钥就是一串很长... -
以太坊代币分层确定性钱包Wallet介绍
2018-08-09 15:25:46钱包是用于发送和接受代币的客户端,就像我们使用邮箱来管理自己的邮件,我们需要...私钥也用于生成你的代币地址 - 这就像邮箱地址,只有知道地址才能给别人发送代币。 然而,尽管代币地址是通过私钥生成的,但是没... -
区块链以太坊代币开发新技术分层确定性钱包Wallet 介绍
2018-01-29 10:57:48区块链爱好者(QQ:53016353) 钱包是用于发送和接受代币的客户端,就像我们使用邮箱来管理自己的邮件,我们需要一个客户端来...私钥也用于生成你的代币地址 - 这就像邮箱地址,只有知道地址才能给别人发送代币 -
android web3j 代币查询_GitHub - gangan1345/wallet-eth-android: wallet-eth 以太坊代币钱包 助记词 私钥...
2020-12-28 22:46:02wallet-eth-androidwallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账(bip39、bip32、bip44、web3j)生成钱包地址// 生成钱包地址Wallet wallet = WalletManager.generateWalletAddress();// 根据助记词获取地址... -
以太坊内部交易和代币交易
2019-04-25 19:36:41当使用像Etherscan这样的以太网区块链探测器来检查地址时,你可能会遇到某些具有交易,内部交易和代币交易的地址。要理解它们之间的区别,我们...当你将智能合约部署到以太坊区块链时,会生成一个内部地址,该地址... -
以太坊上发行ERC20代币
2018-12-13 17:26:00ERC20 代币生成 环境 虚拟主机: ubuntu 18虚拟机 宿主主机: win10; ip:192.168.0.160 1.部署以太坊 1.1 安装GO 安装go,并编译geth 将下载好的golang包上传到root目录。 sudo apt-get install -y build-essential ... -
功能强大安全可靠的以太坊ETHKK冷钱包,支持以太坊框架内所有ERC-20代币发送存储
2020-08-20 17:19:44ETHKK是以太坊社区最受欢迎的钱包之一,在手机或台式机上都可以使用,可以让你发送、创建和接收以太币,而不会影响你的私钥。 ETHKK不会储存你的密码或钥匙,你只需要使用Keystore文件生成账户然后使用私钥来访问它... -
以太坊
2020-09-08 11:10:27以太坊以太坊简介以太坊特点以太坊的组成部分以太坊中的重要概念以太坊的货币“幽灵”(GHOST)协议去中心化应用代币(Token)初识以太坊以太币单位以太坊钱包私钥、公钥和地址以太坊钱包(MetaMask)欢迎使用... -
以太坊 钱包 转账 查询指定代币余额
2018-03-21 11:49:23前一篇讲了下怎么生成钱包 现在再来说一下如何进行转账 查指定代币余额 依旧是基于web3j的 好了直接上代码 //建立连接Admin web3j = AdminFactory.build(new HttpService("你自己站点的地址"));//获取... -
android web3j 代币查询_Android通过web3j以太坊智能合约交互
2020-12-28 22:45:58如果要下载整个以太坊区块链并保持本地节点同步。当区块链占用了我计算机上超过100GB的空间。这在台式计算机上可能有意义,但在移动设备上则不太合理。解决此限制的一种方法是使用像Infura这样的服务。Infura允许你... -
以太坊账户所有交易查询_交易所对接以太坊钱包服务设计与实现
2020-11-30 04:09:30交易所系统中钱包服务是一个非常重要的组件,它的主要功能包括:生成以太坊充值地址当监听地址发生新交易时获取通知广播签名交易处理ERC20代币的充值在区块链中部署新的合约并操作合约方法如果希望快速掌握... -
Upchain-wallet:以太坊钱包(支持DApp浏览器)-功能强大的以太坊Android Wallet和DApp浏览器-源码
2021-02-05 04:35:37UpChain钱包-功能强大,安全且开源的以太坊Android钱包 登链钱包是一种安全且功能完善的以太坊去中心化钱包(完全开放),界面高度模仿imToken。 使用登链开源钱包,再也不用担心私钥会不会被上传到服务器(不放心... -
MyEtherWallet以太坊钱包源程序.zip
2020-12-22 17:20:41MyEtherWallet以太坊钱包源程序:用户应该能够在本地和脱机运行,而不会出现问题,支持本地打开index进行生成钱包,离线交易,接收,发送,智能合约,千余种代币,币种兑换 -
先睹为快,以太坊2.0存款合约界面流出
2021-01-08 02:39:54以下截图展示了以太坊 2.0 存款合约界面(可能是 2020 年 2 月的一个较旧版本),从中我们可以看出,该存款流程最开始是一个对抵押和激励措施的快速描述,然后会生成 2 个用于验证的密钥对。 以太坊 2.0 会有两个... -
以太坊钱包服务设计与实现代码
2019-08-08 18:07:19交易所钱包服务是加密货币交易所系统中的重要组成部分,它负责与各种不同的区块链...生成以太坊充值地址 当监听地址发生新交易时获取通知 广播签名交易 处理ERC20代币的充值 在区块链中部署新的合约并操作合约方法 ... -
以太坊钱包开发系列2 - 账号Keystore文件导入导出
2018-11-08 09:36:59以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号、账号Keystore文件导入导出、展示钱包信息及发起签名交易、发送Token(代币),... -
web3j 基础功能实现 以太坊客户端 web3j + springboot
2020-04-08 11:14:05此demo完成功能:创建本地钱包、生成钱包json文件、根据address查询ETH余额、查询ETH代币余额、根据hash查询交易详情、ETH使用钱包转账、ETH代币使用钱包转账。实测。详细步骤下载查看readme.md -
数字货币钱包 实现一个以太坊钱包 XToken(0.0)
2018-10-06 14:16:09折腾了几天终于有一个很简陋的钱包了(UI... 1、支持标准BIP44的助记词倒入与生成; 2、以太币转账; 3、ERC20代币转账; 界面 分为几个部分, 提示信息:用于显示钱包的一些信息; 网络选择:支持主... -
js导出excel文件_使用ethers.js开发以太坊Web钱包2 - 账号Keystore文件导入导出
2020-11-29 00:21:39以太坊去中心化网页钱包开发系列,点链接观看视频课程,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号、账号Keystore文件导入导出、展示钱包信息及发起签名交易... -
pyfolio2:一种用于跟踪您的加密货币持有价值的工具,已更新为包括以太坊股份收益-源码
2021-02-14 04:32:22这是一个Python(3.7+)工具,用于向您显示所持有的任何代币中所持有资产的价值(以您选择的货币,默认为美元),并更新为包含以太坊权益的收益。 它不会显示您的持仓量是增加还是减少,或者只是根据CoinMarketCap... -
漂亮的游戏:N一个以太坊,松露,Ganache上的NFT(ERC721)纸牌游戏,并在IPFS上托管-源码
2021-02-04 14:30:43在部署到以太坊区块链上之后,用户将能够通过DAPP的前端界面与智能合约进行交互来玩游戏。 获取游戏卡:用户可以使用ETH获取游戏卡。 每张游戏卡上都会有一个游戏点,这将用于在游戏后期确定赢家。 的角色 卡收集 ...
-
frontEndProjects:此存储库包含我的前端实践项目的集合-源码
-
混合范数偏最小二乘
-
变量 及变量声明
-
Springboot项目架构设计
-
自动化测试Python3+Selenium3+Unittest
-
MySQL 查询与高级查询(多表、嵌套和正则表达式)
-
Python函数库深度详解(1)
-
JS:使用in和hasOwnProperty检查对象中是否含有某个属性
-
C语言零基础入门(详细讲解)
-
MySQL 高可用工具 heartbeat 实战部署详解
-
Oracle分页查询性能优化及一些规则
-
三线一单”大气环境质量底线体系与划分技术方法
-
Unity RUST 逆向安全开发
-
SPOT(Systems Polynomial Optimization Tools).pdf
-
blog_cf:这是一个使用CloudFlare页面的博客-源码
-
云开发后台+微信扫码点餐小程序+cms网页管理后台 含后厨端和用户端
-
kalman滤波(OpenCV中的KalmanFilter类)
-
MySQL 索引
-
如何开启和使用windows 10中的Hyper-v
-
NFS 实现高可用(DRBD + heartbeat)