|
26 | 26 | import org.tron.api.GrpcAPI.BlockList;
|
27 | 27 | import org.tron.api.GrpcAPI.BlockReference;
|
28 | 28 | import org.tron.api.GrpcAPI.BytesMessage;
|
| 29 | +import org.tron.api.GrpcAPI.EasyTransferMessage; |
| 30 | +import org.tron.api.GrpcAPI.EasyTransferResponse; |
29 | 31 | import org.tron.api.GrpcAPI.EmptyMessage;
|
30 | 32 | import org.tron.api.GrpcAPI.Node;
|
31 | 33 | import org.tron.api.GrpcAPI.NodeList;
|
32 | 34 | import org.tron.api.GrpcAPI.NumberMessage;
|
33 | 35 | import org.tron.api.GrpcAPI.PaginatedMessage;
|
| 36 | +import org.tron.api.GrpcAPI.Return.response_code; |
34 | 37 | import org.tron.api.GrpcAPI.TransactionList;
|
35 | 38 | import org.tron.api.GrpcAPI.WitnessList;
|
36 | 39 | import org.tron.api.WalletExtensionGrpc;
|
37 | 40 | import org.tron.api.WalletGrpc.WalletImplBase;
|
38 | 41 | import org.tron.api.WalletSolidityGrpc.WalletSolidityImplBase;
|
39 | 42 | import org.tron.common.application.Service;
|
| 43 | +import org.tron.common.crypto.ECKey; |
40 | 44 | import org.tron.common.overlay.discover.node.NodeHandler;
|
41 | 45 | import org.tron.common.overlay.discover.node.NodeManager;
|
42 | 46 | import org.tron.common.utils.ByteArray;
|
|
70 | 74 | import org.tron.protos.Protocol.DynamicProperties;
|
71 | 75 | import org.tron.protos.Protocol.Transaction;
|
72 | 76 | import org.tron.protos.Protocol.Transaction.Contract.ContractType;
|
| 77 | +import org.tron.protos.Protocol.TransactionSign; |
73 | 78 |
|
74 | 79 | @Component
|
75 | 80 | @Slf4j
|
@@ -372,6 +377,58 @@ private TransactionCapsule createTransactionCapsule(com.google.protobuf.Message
|
372 | 377 | return trx;
|
373 | 378 | }
|
374 | 379 |
|
| 380 | + @Override |
| 381 | + public void getTransactionSign(TransactionSign req, |
| 382 | + StreamObserver<Transaction> responseObserver) { |
| 383 | + TransactionCapsule retur = wallet.getTransactionSign(req); |
| 384 | + responseObserver.onNext(retur.getInstance()); |
| 385 | + responseObserver.onCompleted(); |
| 386 | + } |
| 387 | + |
| 388 | + @Override |
| 389 | + public void createAdresss(BytesMessage req, |
| 390 | + StreamObserver<BytesMessage> responseObserver) { |
| 391 | + byte[] address = wallet.createAdresss(req.getValue().toByteArray()); |
| 392 | + BytesMessage.Builder builder = BytesMessage.newBuilder(); |
| 393 | + builder.setValue(ByteString.copyFrom(address)); |
| 394 | + responseObserver.onNext(builder.build()); |
| 395 | + responseObserver.onCompleted(); |
| 396 | + } |
| 397 | + |
| 398 | + @Override |
| 399 | + public void easyTransfer(EasyTransferMessage req, |
| 400 | + StreamObserver<EasyTransferResponse> responseObserver) { |
| 401 | + byte[] privateKey = wallet.pass2Key(req.getPassPhrase().toByteArray()); |
| 402 | + ECKey ecKey = ECKey.fromPrivate(privateKey); |
| 403 | + byte[] owner = ecKey.getAddress(); |
| 404 | + TransferContract.Builder builder = TransferContract.newBuilder(); |
| 405 | + builder.setOwnerAddress(ByteString.copyFrom(owner)); |
| 406 | + builder.setToAddress(req.getToAddress()); |
| 407 | + builder.setAmount(req.getAmount()); |
| 408 | + |
| 409 | + TransactionCapsule transactionCapsule = null; |
| 410 | + GrpcAPI.Return.Builder returnBuilder = GrpcAPI.Return.newBuilder(); |
| 411 | + EasyTransferResponse.Builder responseBuild = EasyTransferResponse.newBuilder(); |
| 412 | + try { |
| 413 | + transactionCapsule = createTransactionCapsule(builder.build(), |
| 414 | + ContractType.TransferContract); |
| 415 | + } catch (ContractValidateException e) { |
| 416 | + returnBuilder.setResult(false).setCode(response_code.CONTRACT_VALIDATE_ERROR) |
| 417 | + .setMessage(ByteString.copyFromUtf8(e.getMessage())); |
| 418 | + responseBuild.setResult(returnBuilder.build()); |
| 419 | + responseObserver.onNext(responseBuild.build()); |
| 420 | + responseObserver.onCompleted(); |
| 421 | + return; |
| 422 | + } |
| 423 | + |
| 424 | + transactionCapsule.sign(privateKey); |
| 425 | + GrpcAPI.Return retur = wallet.broadcastTransaction(transactionCapsule.getInstance()); |
| 426 | + responseBuild.setTransaction(transactionCapsule.getInstance()); |
| 427 | + responseBuild.setResult(retur); |
| 428 | + responseObserver.onNext(responseBuild.build()); |
| 429 | + responseObserver.onCompleted(); |
| 430 | + } |
| 431 | + |
375 | 432 | @Override
|
376 | 433 | public void broadcastTransaction(Transaction req,
|
377 | 434 | StreamObserver<GrpcAPI.Return> responseObserver) {
|
|
0 commit comments