Skip to content

Commit b2f6571

Browse files
committed
auth 3.0
1 parent 9e916d7 commit b2f6571

File tree

10 files changed

+3156
-0
lines changed

10 files changed

+3156
-0
lines changed

sdk-service/src/main/java/org/fisco/bcos/sdk/auth/contracts/Committee.java

Lines changed: 348 additions & 0 deletions
Large diffs are not rendered by default.

sdk-service/src/main/java/org/fisco/bcos/sdk/auth/contracts/CommitteeManager.java

Lines changed: 619 additions & 0 deletions
Large diffs are not rendered by default.

sdk-service/src/main/java/org/fisco/bcos/sdk/auth/contracts/ContractAuthPrecompiled.java

Lines changed: 535 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package org.fisco.bcos.sdk.auth.contracts;
2+
3+
import java.util.Arrays;
4+
import org.fisco.bcos.sdk.client.Client;
5+
import org.fisco.bcos.sdk.codec.datatypes.Bool;
6+
import org.fisco.bcos.sdk.codec.datatypes.Function;
7+
import org.fisco.bcos.sdk.codec.datatypes.Type;
8+
import org.fisco.bcos.sdk.codec.datatypes.TypeReference;
9+
import org.fisco.bcos.sdk.contract.Contract;
10+
import org.fisco.bcos.sdk.crypto.CryptoSuite;
11+
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
12+
import org.fisco.bcos.sdk.model.CryptoType;
13+
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;
14+
15+
@SuppressWarnings("unchecked")
16+
public class ContractInterceptor extends Contract {
17+
public static final String[] BINARY_ARRAY = {
18+
"608060405234801561001057600080fd5b5061045a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806352d48562146100465780636bedbe88146100eb5780639ed9331814610190575b600080fd5b6100d16004803603606081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ec565b604051808215151515815260200191505060405180910390f35b6101766004803603606081101561010157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610202565b604051808215151515815260200191505060405180910390f35b6101d2600480360360208110156101a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610218565b604051808215151515815260200191505060405180910390f35b60006101f98484846102e0565b90509392505050565b600061020f8484846102e0565b90509392505050565b60008061100590508073ffffffffffffffffffffffffffffffffffffffff1663630577e5846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561029d57600080fd5b505afa1580156102b1573d6000803e3d6000fd5b505050506040513d60208110156102c757600080fd5b8101908080519060200190929190505050915050919050565b60008061100590508073ffffffffffffffffffffffffffffffffffffffff1663d8662aa48686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156103df57600080fd5b505afa1580156103f3573d6000803e3d6000fd5b505050506040513d602081101561040957600080fd5b8101908080519060200190929190505050915050939250505056fea26469706673582212204bc4858487aef75f434b59f43af97ee8d6cc6c870deeaf8f0720e69be9c79a1064736f6c634300060a0033"
19+
};
20+
21+
public static final String BINARY =
22+
org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);
23+
24+
public static final String[] SM_BINARY_ARRAY = {
25+
"608060405234801561001057600080fd5b5061045a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806324f8d036146100465780634ba0a39d146100eb5780636ebc0c5014610190575b600080fd5b6100d16004803603606081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ec565b604051808215151515815260200191505060405180910390f35b6101766004803603606081101561010157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610202565b604051808215151515815260200191505060405180910390f35b6101d2600480360360208110156101a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610218565b604051808215151515815260200191505060405180910390f35b60006101f98484846102e0565b90509392505050565b600061020f8484846102e0565b90509392505050565b60008061100590508073ffffffffffffffffffffffffffffffffffffffff1663c59065fb846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561029d57600080fd5b505afa1580156102b1573d6000803e3d6000fd5b505050506040513d60208110156102c757600080fd5b8101908080519060200190929190505050915050919050565b60008061100590508073ffffffffffffffffffffffffffffffffffffffff1663d3f8058c8686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156103df57600080fd5b505afa1580156103f3573d6000803e3d6000fd5b505050506040513d602081101561040957600080fd5b8101908080519060200190929190505050915050939250505056fea26469706673582212204ce95a88c9b830bdb3c6f99bd4fb1a848749c1423864a57412074580c8edad5064736f6c634300060a0033"
26+
};
27+
28+
public static final String SM_BINARY =
29+
org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);
30+
31+
public static final String[] ABI_ARRAY = {
32+
"[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"methodId\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"call\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"methodId\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"sendTransaction\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
33+
};
34+
35+
public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);
36+
37+
public static final String FUNC_CALL = "call";
38+
39+
public static final String FUNC_CREATE = "create";
40+
41+
public static final String FUNC_SENDTRANSACTION = "sendTransaction";
42+
43+
protected ContractInterceptor(String contractAddress, Client client, CryptoKeyPair credential) {
44+
super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
45+
}
46+
47+
public static String getBinary(CryptoSuite cryptoSuite) {
48+
return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
49+
}
50+
51+
public static String getABI() {
52+
return ABI;
53+
}
54+
55+
public Boolean call(String contractAddr, byte[] methodId, String account)
56+
throws ContractException {
57+
final Function function =
58+
new Function(
59+
FUNC_CALL,
60+
Arrays.<Type>asList(
61+
new org.fisco.bcos.sdk.codec.datatypes.Address(contractAddr),
62+
new org.fisco.bcos.sdk.codec.datatypes.generated.Bytes4(methodId),
63+
new org.fisco.bcos.sdk.codec.datatypes.Address(account)),
64+
Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
65+
return executeCallWithSingleValueReturn(function, Boolean.class);
66+
}
67+
68+
public Boolean create(String account) throws ContractException {
69+
final Function function =
70+
new Function(
71+
FUNC_CREATE,
72+
Arrays.<Type>asList(
73+
new org.fisco.bcos.sdk.codec.datatypes.Address(account)),
74+
Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
75+
return executeCallWithSingleValueReturn(function, Boolean.class);
76+
}
77+
78+
public Boolean sendTransaction(String contractAddr, byte[] methodId, String account)
79+
throws ContractException {
80+
final Function function =
81+
new Function(
82+
FUNC_SENDTRANSACTION,
83+
Arrays.<Type>asList(
84+
new org.fisco.bcos.sdk.codec.datatypes.Address(contractAddr),
85+
new org.fisco.bcos.sdk.codec.datatypes.generated.Bytes4(methodId),
86+
new org.fisco.bcos.sdk.codec.datatypes.Address(account)),
87+
Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
88+
return executeCallWithSingleValueReturn(function, Boolean.class);
89+
}
90+
91+
public static ContractInterceptor load(
92+
String contractAddress, Client client, CryptoKeyPair credential) {
93+
return new ContractInterceptor(contractAddress, client, credential);
94+
}
95+
96+
public static ContractInterceptor deploy(Client client, CryptoKeyPair credential)
97+
throws ContractException {
98+
return deploy(
99+
ContractInterceptor.class,
100+
client,
101+
credential,
102+
getBinary(client.getCryptoSuite()),
103+
null,
104+
null,
105+
null);
106+
}
107+
}

0 commit comments

Comments
 (0)