Skip to content

Commit e010330

Browse files
authored
Merge pull request #642 from lxcmyf/release_v4.7.2
feat(freezeV2): upgrade stake2.0 APIs
2 parents cf87486 + dd5c16b commit e010330

File tree

10 files changed

+148
-33
lines changed

10 files changed

+148
-33
lines changed

README.md

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ For more information on a specific command, just type the command on terminal wh
9797
| [UpdateBrokerage](#Brokerage) | [UpdateEnergyLimit](#How-to-use-smart-contracts) |[UpdateSetting](#How-to-use-smart-contracts) |
9898
| [UpdateAccountPermission](#How-to-use-the-multi-signature-feature-of-wallet-cli) | [VoteWitness](#How-to-vote) | [FreezeBalanceV2](#How-to-freezev2) |
9999
| [UnfreezeBalanceV2](#How-to-freezev2) | [DelegateResource](#How-to-freezev2) | [UnDelegateResource](#How-to-freezev2) |
100-
| [WithdrawExpireUnfreeze](#How-to-freezev2) | [GetDelegatedResourceV2](#How-to-freezev2) | [GetDelegatedResourceAccountIndexV2](#How-to-freezev2) |
101-
| [GetCanDelegatedMaxSize](#How-to-freezev2) | [GetAvailableUnfreezeCount](#How-to-freezev2) | |
100+
| [WithdrawExpireUnfreeze](#How-to-freezev2) | [CancelAllUnfreezeV2](#How-to-freezev2) |[GetDelegatedResourceV2](#How-to-freezev2) |
101+
| [GetDelegatedResourceAccountIndexV2](#How-to-freezev2) | [GetCanDelegatedMaxSize](#How-to-freezev2) | [GetAvailableUnfreezeCount](#How-to-freezev2) | |
102102

103103
Type any one of the listed commands, to display how-to tips.
104104

@@ -1342,6 +1342,46 @@ wallet> GetTransactionById e5763ab8dfb1e7ed076770d55cf3c1ddaf36d75e23ec8330f99df
13421342
"raw_data_hex":"0a020000220819b59068c6058ff44096e18bb5d1305a5a083812560a3b747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5769746864726177457870697265556e667265657a65436f6e747261637412170a154159e3741a68ec3e1ebba80ad809d5ccd31674236e7093b3e5aad130"
13431343
}
13441344
```
1345+
> cancelAllUnfreezeV2 [OwnerAddress]
1346+
1347+
OwnerAddress
1348+
> The address of the account that initiated the transaction, optional, default is the address of the login account.
1349+
1350+
Example:
1351+
```console
1352+
wallet> cancelAllUnfreezeV2 TJAVcszse667FmSNCwU2fm6DmfM5D4AyDh
1353+
txid is e5763ab8dfb1e7ed076770d55cf3c1ddaf36d75e23ec8330f99df7e98f54a147
1354+
wallet> GetTransactionById e5763ab8dfb1e7ed076770d55cf3c1ddaf36d75e23ec8330f99df7e98f54a147
1355+
{
1356+
"ret":[
1357+
{
1358+
"contractRet":"SUCCESS"
1359+
}
1360+
],
1361+
"signature":[
1362+
"f8f02b5aa634b8666862a6d2ed68fcfd90afc616d14062952b0b09f0404d9bca6c4d3dc6dab082784950ff1ded235a07dab0d738c8a202be9451d5ca92b8eece01"
1363+
],
1364+
"txID":"e5763ab8dfb1e7ed076770d55cf3c1ddaf36d75e23ec8330f99df7e98f54a147",
1365+
"raw_data":{
1366+
"contract":[
1367+
{
1368+
"parameter":{
1369+
"value":{
1370+
"owner_address":"4159e3741a68ec3e1ebba80ad809d5ccd31674236e"
1371+
},
1372+
"type_url":"type.googleapis.com/protocol.CancelAllUnfreezeV2"
1373+
},
1374+
"type":"CancelAllUnfreezeV2Contract"
1375+
}
1376+
],
1377+
"ref_block_bytes":"0000",
1378+
"ref_block_hash":"19b59068c6058ff4",
1379+
"expiration":1671122055318,
1380+
"timestamp":1671100455315
1381+
},
1382+
"raw_data_hex":"0a020000220819b59068c6058ff44096e18bb5d1305a5a083812560a3b747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5769746864726177457870697265556e667265657a65436f6e747261637412170a154159e3741a68ec3e1ebba80ad809d5ccd31674236e7093b3e5aad130"
1383+
}
1384+
```
13451385

13461386
### get resource delegation information use v2 API
13471387

src/main/java/org/tron/common/utils/HttpSelfFormatFieldName.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ public class HttpSelfFormatFieldName {
144144
//UnDelegateResourceContract
145145
AddressFieldNameMap.put("protocol.UnDelegateResourceContract.owner_address", 1);
146146
AddressFieldNameMap.put("protocol.UnDelegateResourceContract.receiver_address", 1);
147+
//CancelAllUnfreezeV2Contract
148+
AddressFieldNameMap.put("protocol.CancelAllUnfreezeV2Contract.owner_address", 1);
149+
147150
AddressFieldNameMap.put("protocol.CanDelegatedMaxSizeRequestMessage.owner_address", 1);
148151
AddressFieldNameMap.put("protocol.GetAvailableUnfreezeCountRequestMessage.owner_address", 1);
149152
AddressFieldNameMap.put("protocol.CanWithdrawUnfreezeAmountRequestMessage.owner_address", 1);

src/main/java/org/tron/common/utils/Utils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package org.tron.common.utils;
2020

21+
import com.alibaba.fastjson.JSON;
2122
import com.alibaba.fastjson.JSONArray;
2223
import com.alibaba.fastjson.JSONObject;
2324
import com.google.protobuf.Any;
@@ -55,6 +56,7 @@
5556
import org.tron.protos.contract.AssetIssueContractOuterClass.TransferAssetContract;
5657
import org.tron.protos.contract.AssetIssueContractOuterClass.UnfreezeAssetContract;
5758
import org.tron.protos.contract.AssetIssueContractOuterClass.UpdateAssetContract;
59+
import org.tron.protos.contract.BalanceContract.CancelAllUnfreezeV2Contract;
5860
import org.tron.protos.contract.BalanceContract.FreezeBalanceContract;
5961
import org.tron.protos.contract.BalanceContract.TransferContract;
6062
import org.tron.protos.contract.BalanceContract.UnfreezeBalanceContract;
@@ -618,6 +620,12 @@ public static JSONObject printTransactionToJSON(Transaction transaction, boolean
618620
JSONObject.parseObject(
619621
JsonFormat.printToString(unDelegateResourceContract, selfType));
620622
break;
623+
case CancelAllUnfreezeV2Contract:
624+
CancelAllUnfreezeV2Contract cancelAllUnfreezeV2Contract =
625+
contractParameter.unpack(CancelAllUnfreezeV2Contract.class);
626+
contractJson = JSON.parseObject(
627+
JsonFormat.printToString(cancelAllUnfreezeV2Contract, selfType));
628+
break;
621629
// new freeze end
622630
// todo add other contract
623631
default:

src/main/java/org/tron/walletcli/Client.java

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.io.IOException;
44
import java.math.BigInteger;
5-
import java.security.SecureRandom;
65
import java.text.SimpleDateFormat;
76
import java.util.*;
87
import java.util.Base64.Decoder;
@@ -34,7 +33,6 @@
3433
import org.tron.common.zksnark.LibrustzcashParam;
3534
import org.tron.core.exception.CancelException;
3635
import org.tron.core.exception.CipherException;
37-
import org.tron.core.exception.EncodingException;
3836
import org.tron.core.exception.ZksnarkException;
3937
import org.tron.core.zen.ShieldedAddressInfo;
4038
import org.tron.core.zen.ShieldedNoteInfo;
@@ -84,6 +82,7 @@ public class Client {
8482
"BackupWallet",
8583
"BackupWallet2Base64",
8684
"BroadcastTransaction",
85+
"CancelAllUnfreezeV2",
8786
"ChangePassword",
8887
"ClearContractABI",
8988
"Create2",
@@ -225,6 +224,7 @@ public class Client {
225224
"BackupWallet",
226225
"BackupWallet2Base64",
227226
"BroadcastTransaction",
227+
"CancelAllUnfreezeV2",
228228
"ChangePassword",
229229
"ClearContractABI",
230230
"Create2",
@@ -1408,30 +1408,32 @@ private void withdrawExpireUnfreeze(String[] parameters)
14081408

14091409
private void delegateResource(String[] parameters)
14101410
throws IOException, CipherException, CancelException {
1411-
if (parameters == null || !(parameters.length == 3 || parameters.length == 4 || parameters.length == 5)) {
1411+
if (parameters == null || !(parameters.length == 3 || parameters.length == 4 || parameters.length == 5 || parameters.length == 6)) {
14121412
System.out.println("Use delegateResource command with below syntax: ");
14131413
System.out.println(
1414-
"delegateResource [OwnerAddress] balance ResourceCode(0 BANDWIDTH,1 ENERGY), ReceiverAddress [lock]");
1414+
"delegateResource [OwnerAddress] balance ResourceCode(0 BANDWIDTH,1 ENERGY), "
1415+
+ "ReceiverAddress [lock] [lockPeriod]");
14151416
return;
14161417
}
14171418

14181419
int index = 0;
14191420
byte[] ownerAddress = null;
1420-
long balance = 0;
1421-
int resourceCode = 0;
1422-
byte[] receiverAddress = null;
1421+
long balance;
1422+
int resourceCode;
1423+
byte[] receiverAddress;
14231424
boolean lock = false;
1425+
long lockPeriod = 0;
14241426

14251427
if (parameters.length == 3) {
14261428
balance = Long.parseLong(parameters[index++]);
14271429
resourceCode = Integer.parseInt(parameters[index++]);
1428-
receiverAddress = getAddressBytes(parameters[index++]);
1430+
receiverAddress = getAddressBytes(parameters[index]);
14291431
if (receiverAddress == null) {
14301432
System.out.println(
14311433
"delegateResource receiverAddress is invalid");
14321434
return;
14331435
}
1434-
} else if (parameters.length == 4 || parameters.length == 5) {
1436+
} else {
14351437
ownerAddress = getAddressBytes(parameters[index]);
14361438
if (ownerAddress != null) {
14371439
index ++;
@@ -1445,14 +1447,17 @@ private void delegateResource(String[] parameters)
14451447
return;
14461448
}
14471449

1448-
if (parameters.length == 5 ||
1449-
(ownerAddress == null && parameters.length == 4)) {
1450+
if (parameters.length == 5 || (ownerAddress == null && parameters.length == 4)) {
14501451
lock = Boolean.parseBoolean(parameters[index++]);
14511452
}
1453+
if (parameters.length == 6 || (ownerAddress == null && parameters.length == 5)) {
1454+
lock = Boolean.parseBoolean(parameters[index++]);
1455+
lockPeriod = Long.parseLong(parameters[index]);
1456+
}
14521457
}
14531458

14541459
boolean result = walletApiWrapper.delegateresource(
1455-
ownerAddress, balance, resourceCode, receiverAddress, lock);
1460+
ownerAddress, balance, resourceCode, receiverAddress, lock, lockPeriod);
14561461
if (result) {
14571462
System.out.println("delegateResource successful !!!");
14581463
} else {
@@ -1508,6 +1513,21 @@ private void unDelegateResource(String[] parameters)
15081513
}
15091514
}
15101515

1516+
private void cancelAllUnfreezeV2(String[] parameters)
1517+
throws IOException, CipherException, CancelException {
1518+
if (parameters.length > 0) {
1519+
System.out.println("Use CancelAllUnfreezeV2 command with below syntax: ");
1520+
System.out.println("CancelAllUnfreezeV2");
1521+
return;
1522+
}
1523+
boolean result = walletApiWrapper.cancelAllUnfreezeV2();
1524+
if (result) {
1525+
System.out.println("cancelAllUnfreezeV2 successful !!!");
1526+
} else {
1527+
System.out.println("cancelAllUnfreezeV2 failed !!!");
1528+
}
1529+
}
1530+
15111531
private void unfreezeAsset(String[] parameters) throws IOException,
15121532
CipherException, CancelException {
15131533
System.out.println("Use UnfreezeAsset command like: ");
@@ -4505,6 +4525,10 @@ private void run() {
45054525
unDelegateResource(parameters);
45064526
break;
45074527
}
4528+
case "cancelallunfreezev2": {
4529+
cancelAllUnfreezeV2(parameters);
4530+
break;
4531+
}
45084532
case "withdrawbalance": {
45094533
withdrawBalance(parameters);
45104534
break;

src/main/java/org/tron/walletcli/WalletApiWrapper.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.tron.core.zen.address.SpendingKey;
2929
import org.tron.keystore.StringUtils;
3030
import org.tron.keystore.WalletFile;
31-
import org.tron.keystore.WalletUtils;
3231
import org.tron.protos.Protocol.Account;
3332
import org.tron.protos.Protocol.Block;
3433
import org.tron.protos.Protocol.ChainParameters;
@@ -548,15 +547,15 @@ public boolean withdrawExpireUnfreeze(byte[] ownerAddress)
548547
}
549548

550549
public boolean delegateresource(byte[] ownerAddress, long balance
551-
, int resourceCode, byte[] receiverAddress, boolean lock)
550+
, int resourceCode, byte[] receiverAddress, boolean lock, long lockPeriod)
552551
throws CipherException, IOException, CancelException {
553552
if (wallet == null || !wallet.isLoginState()) {
554553
System.out.println("Warning: delegateresource failed, Please login first !!");
555554
return false;
556555
}
557556

558557
return wallet.delegateResource(ownerAddress, balance
559-
, resourceCode, receiverAddress, lock);
558+
, resourceCode, receiverAddress, lock, lockPeriod);
560559
}
561560

562561
public boolean undelegateresource(byte[] ownerAddress, long balance
@@ -570,6 +569,15 @@ public boolean undelegateresource(byte[] ownerAddress, long balance
570569
return wallet.unDelegateResource(ownerAddress, balance, resourceCode, receiverAddress);
571570
}
572571

572+
public boolean cancelAllUnfreezeV2()
573+
throws CipherException, IOException, CancelException {
574+
if (wallet == null || !wallet.isLoginState()) {
575+
System.out.println("Warning: cancelAllUnfreezeV2 failed, Please login first !!");
576+
return false;
577+
}
578+
return wallet.cancelAllUnfreezeV2();
579+
}
580+
573581
public boolean unfreezeAsset(byte[] ownerAddress)
574582
throws CipherException, IOException, CancelException {
575583
if (wallet == null || !wallet.isLoginState()) {

src/main/java/org/tron/walletserver/GrpcClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.tron.protos.contract.AssetIssueContractOuterClass.UnfreezeAssetContract;
4545
import org.tron.protos.contract.AssetIssueContractOuterClass.UpdateAssetContract;
4646
import org.tron.protos.contract.BalanceContract;
47+
import org.tron.protos.contract.BalanceContract.CancelAllUnfreezeV2Contract;
4748
import org.tron.protos.contract.BalanceContract.FreezeBalanceContract;
4849
import org.tron.protos.contract.BalanceContract.TransferContract;
4950
import org.tron.protos.contract.BalanceContract.UnfreezeBalanceContract;
@@ -229,6 +230,10 @@ public TransactionExtention createTransactionV2(BalanceContract.UnDelegateResour
229230
return blockingStubFull.unDelegateResource(contract);
230231
}
231232

233+
public TransactionExtention createTransactionV2(CancelAllUnfreezeV2Contract contract) {
234+
return blockingStubFull.cancelAllUnfreezeV2(contract);
235+
}
236+
232237
public Transaction createTransaction(UnfreezeAssetContract contract) {
233238
return blockingStubFull.unfreezeAsset(contract);
234239
}

src/main/java/org/tron/walletserver/WalletApi.java

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@
122122
import org.tron.protos.contract.AssetIssueContractOuterClass.UnfreezeAssetContract;
123123
import org.tron.protos.contract.AssetIssueContractOuterClass.UpdateAssetContract;
124124
import org.tron.protos.contract.BalanceContract;
125+
import org.tron.protos.contract.BalanceContract.CancelAllUnfreezeV2Contract;
125126
import org.tron.protos.contract.BalanceContract.FreezeBalanceContract;
126127
import org.tron.protos.contract.BalanceContract.TransferContract;
127128
import org.tron.protos.contract.BalanceContract.UnfreezeBalanceContract;
@@ -1368,10 +1369,10 @@ public boolean withdrawExpireUnfreeze(byte[] ownerAddress)
13681369
}
13691370

13701371
public boolean delegateResource(byte[] ownerAddress, long balance
1371-
,int resourceCode, byte[] receiverAddress, boolean lock)
1372+
,int resourceCode, byte[] receiverAddress, boolean lock, long lockPeriod)
13721373
throws CipherException, IOException, CancelException {
13731374
BalanceContract.DelegateResourceContract contract = createDelegateResourceContract(
1374-
ownerAddress, balance, resourceCode, receiverAddress, lock);
1375+
ownerAddress, balance, resourceCode, receiverAddress, lock, lockPeriod);
13751376
TransactionExtention transactionExtention = rpcCli.createTransactionV2(contract);
13761377
return processTransactionExtention(transactionExtention);
13771378
}
@@ -1385,6 +1386,13 @@ public boolean unDelegateResource(byte[] ownerAddress, long balance
13851386
return processTransactionExtention(transactionExtention);
13861387
}
13871388

1389+
public boolean cancelAllUnfreezeV2()
1390+
throws CipherException, IOException, CancelException {
1391+
CancelAllUnfreezeV2Contract contract = createCancelAllUnfreezeV2Contract();
1392+
TransactionExtention transactionExtention = rpcCli.createTransactionV2(contract);
1393+
return processTransactionExtention(transactionExtention);
1394+
}
1395+
13881396
private UnfreezeBalanceContract createUnfreezeBalanceContract(
13891397
byte[] address, int resourceCode, byte[] receiverAddress) {
13901398
if (address == null) {
@@ -1393,8 +1401,8 @@ private UnfreezeBalanceContract createUnfreezeBalanceContract(
13931401

13941402
UnfreezeBalanceContract.Builder builder =
13951403
UnfreezeBalanceContract.newBuilder();
1396-
ByteString byteAddreess = ByteString.copyFrom(address);
1397-
builder.setOwnerAddress(byteAddreess).setResourceValue(resourceCode);
1404+
ByteString byteAddress = ByteString.copyFrom(address);
1405+
builder.setOwnerAddress(byteAddress).setResourceValue(resourceCode);
13981406

13991407
if (receiverAddress != null) {
14001408
ByteString receiverAddressBytes =
@@ -1413,8 +1421,8 @@ private BalanceContract.UnfreezeBalanceV2Contract createUnfreezeBalanceContractV
14131421

14141422
BalanceContract.UnfreezeBalanceV2Contract.Builder builder =
14151423
BalanceContract.UnfreezeBalanceV2Contract.newBuilder();
1416-
ByteString byteAddreess = ByteString.copyFrom(address);
1417-
builder.setOwnerAddress(byteAddreess).setResourceValue(resourceCode).setUnfreezeBalance(unfreezeBalance);
1424+
ByteString byteAddress = ByteString.copyFrom(address);
1425+
builder.setOwnerAddress(byteAddress).setResourceValue(resourceCode).setUnfreezeBalance(unfreezeBalance);
14181426

14191427
return builder.build();
14201428
}
@@ -1434,20 +1442,21 @@ private BalanceContract.WithdrawExpireUnfreezeContract createWithdrawExpireUnfre
14341442

14351443
private BalanceContract.DelegateResourceContract createDelegateResourceContract(
14361444
byte[] address, long balance
1437-
,int resourceCode, byte[] receiver, boolean lock) {
1445+
,int resourceCode, byte[] receiver, boolean lock, long lockPeriod) {
14381446
if (address == null) {
14391447
address = getAddress();
14401448
}
14411449

14421450
BalanceContract.DelegateResourceContract.Builder builder =
14431451
BalanceContract.DelegateResourceContract.newBuilder();
1444-
ByteString byteAddreess = ByteString.copyFrom(address);
1445-
ByteString byteReceiverAddreess = ByteString.copyFrom(receiver);
1446-
builder.setOwnerAddress(byteAddreess)
1452+
ByteString byteAddress = ByteString.copyFrom(address);
1453+
ByteString byteReceiverAddress = ByteString.copyFrom(receiver);
1454+
builder.setOwnerAddress(byteAddress)
14471455
.setResourceValue(resourceCode)
14481456
.setBalance(balance)
1449-
.setReceiverAddress(byteReceiverAddreess)
1450-
.setLock(lock);
1457+
.setReceiverAddress(byteReceiverAddress)
1458+
.setLock(lock)
1459+
.setLockPeriod(lockPeriod);
14511460

14521461
return builder.build();
14531462
}
@@ -1461,13 +1470,20 @@ private BalanceContract.UnDelegateResourceContract createUnDelegateResourceContr
14611470

14621471
BalanceContract.UnDelegateResourceContract.Builder builder =
14631472
BalanceContract.UnDelegateResourceContract.newBuilder();
1464-
ByteString byteAddreess = ByteString.copyFrom(address);
1465-
ByteString byteReceiverAddreess = ByteString.copyFrom(receiver);
1466-
builder.setOwnerAddress(byteAddreess)
1473+
ByteString byteAddress = ByteString.copyFrom(address);
1474+
ByteString byteReceiverAddress = ByteString.copyFrom(receiver);
1475+
builder.setOwnerAddress(byteAddress)
14671476
.setResourceValue(resourceCode)
14681477
.setBalance(balance)
1469-
.setReceiverAddress(byteReceiverAddreess);
1478+
.setReceiverAddress(byteReceiverAddress);
1479+
1480+
return builder.build();
1481+
}
14701482

1483+
private CancelAllUnfreezeV2Contract createCancelAllUnfreezeV2Contract() {
1484+
CancelAllUnfreezeV2Contract.Builder builder = CancelAllUnfreezeV2Contract.newBuilder();
1485+
ByteString byteAddress = ByteString.copyFrom(getAddress());
1486+
builder.setOwnerAddress(byteAddress);
14711487
return builder.build();
14721488
}
14731489

0 commit comments

Comments
 (0)