go
https://github.com/onrik/ethrpc
python
https://github.com/ConsenSys/ethjsonrpc
https://github.com/ethereum/web3.py
持续更新
var Web3 = require("web3")
var web3;
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.WebsocketProvider("ws://172.17.116.158:8546"));
}
var contractAbi = [{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogCreateProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogPassProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogRejectProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"val","type":"address"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogSetUnpassed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"auth","type":"bool"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogVote","type":"event"},{"inputs":[],"name":"MaxValidators","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MinimalStakingCoin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ProposalAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PunishContractAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StakingLockPeriod","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ValidatorContractAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WithdrawProfitPeriod","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pass","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalLastingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"proposals","outputs":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"string","name":"details","type":"string"},{"internalType":"uint256","name":"createTime","type":"uint256"},{"internalType":"uint16","name":"agree","type":"uint16"},{"internalType":"uint16","name":"reject","type":"uint16"},{"internalType":"bool","name":"resultExist","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"val","type":"address"},{"internalType":"address","name":"punish","type":"address"},{"internalType":"address","name":"proposal","type":"address"}],"name":"setContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"miner_","type":"address"}],"name":"setMiner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"votes","outputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"voteTime","type":"uint256"},{"internalType":"bool","name":"auth","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"vals","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"string","name":"details","type":"string"}],"name":"createProposal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"auth","type":"bool"}],"name":"voteProposal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"val","type":"address"}],"name":"setUnpassed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}];
var contractaAddress = "0x000000000000000000000000000000000000F002";
MyContract = new web3.eth.Contract(contractAbi, contractaAddress);
//console.log(MyContract.events.orderlog);
var myEvent = MyContract.events.LogCreateProposal({
filter:{},
fromBlock: 0
}, function(error, event){})
.on('data', function(event){
console.log(event); // same results as the optional callback above
})
.on('changed', function(event){
// remove event from local database
})
.on('error', console.error);
npm init -y
npm install web3 --save
node map_event.js
{
address: '0x000000000000000000000000000000000000F002',
blockNumber: 64274,
transactionHash: '0x950203bc5d391a6b8180c5be6d290403f39fe81a8666e40b74cc3b9b094ce1a6',
transactionIndex: 0,
blockHash: '0x9abb16d015c49268c04909bcea414994d9bc0867dc8648b5e3dd33071d86daf5',
logIndex: 0,
removed: false,
id: 'log_14a4176e',
returnValues: Result {
'0': '0x88437e94b8ffc61e30087ba66182c8f291e4af36d289ae299f676f014fdba411',
'1': '0xc65dD4299C682f335d6e15e2B5774D015E01E479',
'2': '0xc65dD4299C682f335d6e15e2B5774D015E01E479',
'3': '1614340623',
id: '0x88437e94b8ffc61e30087ba66182c8f291e4af36d289ae299f676f014fdba411',
proposer: '0xc65dD4299C682f335d6e15e2B5774D015E01E479',
dst: '0xc65dD4299C682f335d6e15e2B5774D015E01E479',
time: '1614340623'
},
event: 'LogCreateProposal',
signature: '0xc10f2f4d53a0e342536c6af3cce9c6ee25c32dbb323521ce0e1d4494a3e362e8',
raw: {
data: '0x000000000000000000000000000000000000000000000000000000006038e20f',
topics: [
'0xc10f2f4d53a0e342536c6af3cce9c6ee25c32dbb323521ce0e1d4494a3e362e8',
'0x88437e94b8ffc61e30087ba66182c8f291e4af36d289ae299f676f014fdba411',
'0x000000000000000000000000c65dd4299c682f335d6e15e2b5774d015e01e479',
'0x000000000000000000000000c65dd4299c682f335d6e15e2b5774d015e01e479'
]
}
官网:https://consensys.net/
开源地址: https://github.com/ConsenSys/quorum
详细介绍:https://rdc.hundsun.com/portal/article/892.html
Quorum是一个基于以太坊的分布式账本协议,具有交易/合同隐私和新的共识机制。
Quorum是go-ethereum的一个分支,并根据go-ethereum发行版进行了更新。
隐私-Quorum通过公共/私有状态分离来支持私有交易和私有合同,并利用对等加密消息交换(请参阅Constellation和Tessera)将私有数据定向传输到网络参与者
替代共识机制-Quorum不需要在许可的网络中使用POW / POS,而是提供了多个更适合联盟链的共识机制:
对等权限-节点/对等权限,确保只有已知方才能加入网络
帐户管理-Quorum引入了帐户插件,该插件使Quorum或clef可以通过包括外部库在内的其他帐户管理方法进行扩展。
可插拔架构-允许将其他功能作为插件添加到核心geth,从而提供可扩展性,灵活性和Quorum功能的独特隔离。
更高的性能-Quorum提供的性能吞吐量比公共场所高得多
IBFT共识概述: https://docs.goquorum.consensys.net/en/stable/Concepts/Consensus/IBFT/
https://www.jianshu.com/p/43354a82e176
有关用于学习和理解以太坊生态系统的可用dapp,服务,著作和知识库的指南。
该资源旨在专注于生态系统的发展,但该相关资料还包括:
可以随意拉取并提交请求,补充您想要添加(或删除!)的工具。如果添加新工具,请添加您认为新开发人员会理解的简短描述。
感谢众多贡献者包括@corbpage和@pakaplace为Meridio做出的贡献,并感谢@jpantunes以更合理的方式重组清单列表。
转载:https://github.com/ConsenSys/ethereum-developer-tools-list
这是一份关于在以太坊上开发应用程序的优质工具清单指南,其中包含一些工具、组件、应用、平台以及服务等。
该列表的创建受到ConsenSys产品经理的推动,他们认为有必要在初级开发与经验丰富的区块链开发人员之间更好地共享工具,开发模式和组件。
该资源旨在专注于开发人员工具,但还包括一些生态系统资源:
以太坊生态系统资源,关于有用的DApp,教育资源,钱包和服务。
可以随意拉取并提交请求,补充您想要添加(或删除!)的工具。如果添加新工具,请添加您认为新开发人员会理解的简短描述。
感谢众多贡献者包括@corbpage和@pakaplace为Meridio做出的贡献,并感谢@jpantunes以更合理的方式重组清单列表。
没有有效产品的项目将不会被添加。
不推荐使用或不再维护的项目将被删除。
没有开放源代码或开发者审核发现是付费/受限制服务的项目将得到进一步审查。
^以上规则公平吗?在此处分享您的想法:
https://github.com/ConsenSys/ethereum-developer-tools-list/pull/70
npm i -g ethnode && ethnode
.auth
和authP
修饰符,您可以保护功能,以便只有其他应用或实体才能访问它转载:https://github.com/ConsenSys/ethereum-developer-tools-list