static Quorum build(Web3jService web3jService) { return new JsonRpc2_0Quorum(web3jService); }
@Override public int hashCode() { int result = getAddress() != null ? getAddress().hashCode() : 0; result = 31 * result + (getPublicKeys() != null ? getPublicKeys().hashCode() : 0); result = 31 * result + (getUrl() != null ? getUrl().hashCode() : 0); return result; } }
@Override public EthSendTransaction sendTransaction( BigInteger gasPrice, BigInteger gasLimit, String to, String data, BigInteger value) throws IOException { PrivateTransaction transaction = new PrivateTransaction( fromAddress, null, gasLimit, to, value, data, privateFrom, privateFor); return quorum.ethSendTransaction(transaction).send(); } }
private void runPrivateGreeterTest( Node sourceNode, Node destNode, String requestId) throws Exception { Quorum quorum = Quorum.build(new HttpService(sourceNode.getUrl())); ClientTransactionManager transactionManager = new ClientTransactionManager( quorum, sourceNode.getAddress(), sourceNode.getPublicKeys().get(0), destNode.getPublicKeys()); String greeting = "Hello Quorum world! [" + requestId + "]"; Greeter contract = Greeter.deploy( quorum, transactionManager, GAS_PRICE, GAS_LIMIT, greeting).send(); assertThat(contract.greet().send(), is(greeting)); }
@Test public void testSendTransaction() throws Exception { web3j.ethSendTransaction( new PrivateTransaction( "FROM", BigInteger.ONE, BigInteger.TEN, "TO", BigInteger.TEN, "DATA", "privateFrom", Arrays.asList("privateFor1", "privateFor2") ) ).send(); verifyResult("{\"jsonrpc\":\"2.0\",\"method\":\"eth_sendTransaction\",\"params\":[{\"from\":\"FROM\",\"to\":\"TO\",\"gas\":\"0xa\",\"value\":\"0xa\",\"data\":\"0xDATA\",\"nonce\":\"0x1\",\"privateFrom\":\"privateFrom\",\"privateFor\":[\"privateFor1\",\"privateFor2\"]}],\"id\":1}"); }
@Test public void testPrivatePayload() { buildResponse("{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x\"}"); PrivatePayload privatePayload = deserialiseResponse(PrivatePayload.class); assertThat(privatePayload.getPrivatePayload(), is("0x")); } }
@InvokeOnHeader(Web3jConstants.QUORUM_GET_PRIVATE_PAYLOAD) void quorumGetPrivatePayload(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } Request<?, PrivatePayload> request = quorum.quorumGetPrivatePayload(message.getBody(String.class)); setRequestId(message, request); PrivatePayload response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.getPrivatePayload()); } }
@Override protected void initWeb3Client(HttpService httpService) { web3j = Quorum.build(httpService); }
@Test public void testGetPrivateTransaction() throws Exception { web3j.quorumGetPrivatePayload("0x").send(); verifyResult("{\"jsonrpc\":\"2.0\",\"method\":\"eth_getQuorumPayload\",\"params\":[\"0x\"],\"id\":1}"); } }
@Test public void testNodes() throws Exception { // Send transactions between all sets of nodes for (int count = 0; count < 1; count++) { for (int i = 0; i < nodes.size(); i++) { Node sourceNode = nodes.get(i); Node destNode = nodes.get((i + 1) % nodes.size()); runPrivateGreeterTest(sourceNode, destNode, Integer.toString(i)); runPrivateHumanStandardTokenTest(sourceNode, destNode); } } }
@InvokeOnHeader(Web3jConstants.QUORUM_CANONICAL_HASH) void quorumCanonicalHash(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } Request<?, CanonicalHash> request = quorum.quorumCanonicalHash(message.getBody(BigInteger.class)); setRequestId(message, request); CanonicalHash response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.getCanonicalHash()); } }
@InvokeOnHeader(Web3jConstants.QUORUM_VOTE) void quorumVote(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } String blockHash = message.getHeader(Web3jConstants.BLOCK_HASH, configuration::getBlockHash, String.class); Request<?, Vote> request = quorum.quorumVote(blockHash); setRequestId(message, request); Vote response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.getTransactionHash()); } }
@InvokeOnHeader(Web3jConstants.QUORUM_IS_BLOCK_MAKER) void quorumIsBlockMaker(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } String address = message.getHeader(Web3jConstants.ADDRESS, configuration::getAddress, String.class); Request<?, BlockMaker> request = quorum.quorumIsBlockMaker(address); setRequestId(message, request); BlockMaker response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.isBlockMaker()); } }
@InvokeOnHeader(Web3jConstants.QUORUM_IS_VOTER) void quorumIsVoter(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } String address = message.getHeader(Web3jConstants.ADDRESS, configuration::getAddress, String.class); Request<?, Voter> request = quorum.quorumIsVoter(address); setRequestId(message, request); Voter response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.isVoter()); } }
@InvokeOnHeader(Web3jConstants.QUORUM_NODE_INFO) void quorumNodeInfo(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } Request<?, QuorumNodeInfo> request = quorum.quorumNodeInfo(); setRequestId(message, request); QuorumNodeInfo response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.getNodeInfo()); } }
@InvokeOnHeader(Web3jConstants.QUORUM_MAKE_BLOCK) void quorumMakeBlock(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } Request<?, MakeBlock> request = quorum.quorumMakeBlock(); setRequestId(message, request); MakeBlock response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.getBlockHash()); } }
@Test public void testEthSendTransaction() { buildResponse("{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x0d9e7e34fd4db216a3f66981a467d9d990954e6ed3128aff4ec51a50fa175663\"}"); EthSendTransaction transaction = deserialiseResponse(EthSendTransaction.class); assertThat(transaction.getTransactionHash(), is("0x0d9e7e34fd4db216a3f66981a467d9d990954e6ed3128aff4ec51a50fa175663")); }
@InvokeOnHeader(Web3jConstants.QUORUM_PAUSE_BLOCK_MAKER) void quorumPauseBlockMaker(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } Request<?, VoidResponse> request = quorum.quorumPauseBlockMaker(); setRequestId(message, request); VoidResponse response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.isValid()); } }
@InvokeOnHeader(Web3jConstants.QUORUM_RESUME_BLOCK_MAKER) void quorumResumeBlockMaker(Message message) throws IOException { if (quorum == null) { setQuorumEndpointError(message); return; } Request<?, VoidResponse> request = quorum.quorumResumeBlockMaker(); setRequestId(message, request); VoidResponse response = request.send(); boolean hasError = checkForError(message, response); if (!hasError) { message.setBody(response.isValid()); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Node node = (Node) o; if (getAddress() != null ? !getAddress().equals(node.getAddress()) : node.getAddress() != null) { return false; } if (getPublicKeys() != null ? !getPublicKeys().equals(node.getPublicKeys()) : node.getPublicKeys() != null) { return false; } return getUrl() != null ? getUrl().equals(node.getUrl()) : node.getUrl() == null; }