Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
02af25c
feat: add ML-DSA post-quantum signature support
Federico2014 Apr 22, 2026
9ca04fb
refactor(crypto): consolidate ML-DSA PQC signer/verifier into unified…
Federico2014 Apr 24, 2026
c5a7bac
chore(crypto): extend pq demo with fullnode sync
Federico2014 Apr 24, 2026
a08de98
feat(crypto): configurable PQ witness scheme
Federico2014 Apr 26, 2026
51af6b6
fix(crypto): pq witness init hardening and test fixes
Federico2014 Apr 26, 2026
b94123e
test(crypto): add ML-DSA vs ECKey signature scheme benchmark
Federico2014 Apr 27, 2026
22b0341
feat(vm): add ML-DSA verify precompiles at 0x12 and 0x14
Federico2014 Apr 27, 2026
99d20b9
feat(crypto): add FN-DSA / Falcon-512 post-quantum signature support
Federico2014 Apr 27, 2026
7a5e8cd
feat(vm): add FN-DSA verify precompile at 0x16 (EIP-8052)
Federico2014 Apr 27, 2026
9f589d5
refactor(protocol): introduce PqPublicKey, PqAuthWitness and key_id-b…
Federico2014 Apr 28, 2026
5368957
refactor(crypto): rename Pq → PQ and fix FN-DSA seed validation
Federico2014 Apr 28, 2026
0626d30
feat(actuator): support PQ-native account creation
Federico2014 Apr 28, 2026
5f0f454
feat(crypto): add Falcon test
Federico2014 Apr 29, 2026
582068e
refactor(protocol): switch to V2 PQWitness
Federico2014 Apr 30, 2026
c412d6c
refactor(crypto): use keccak-256 for fn-dsa address derivation
Federico2014 May 6, 2026
a51cad0
refactor(protocol): reserve UNKNOWN_PQ_SCHEME=0 and resolve to FN_DSA…
Federico2014 May 6, 2026
175107c
refactor(pqc): rename PQWitness→PQAuthSig and ALLOW_FN_DSA→ALLOW_FN_D…
Federico2014 May 7, 2026
0a3d7ec
refactor(witness): switch PQ witness config from seed to (priv, pub) …
Federico2014 May 7, 2026
52284b9
fix(test): wire PQAuthSigNode witness keypair via temp config override
Federico2014 May 7, 2026
4dcddb2
refactor(test): rename PQAuthSigNode to PQWitnessNode
Federico2014 May 7, 2026
e79204b
feat(vm): add 0x17 ValidateMultiSignPQ and 0x18 BatchValidateSignPQ p…
Federico2014 May 8, 2026
f82b521
refactor(witness): collapse localwitness_pq_keys to extended priv‖pub…
Federico2014 May 8, 2026
f1e11e8
style(framework): fix checkstyle violations for PQ imports and line l…
Federico2014 May 8, 2026
bebcf30
fix(actuator): dedup PQ multi-sig by address only; guard pq key list …
Federico2014 May 8, 2026
866aee7
perf(framework): omit FN_DSA_512 scheme tag on the wire
Federico2014 May 8, 2026
5b21959
test(crypto): cover PQ defaults, FNDSA error paths and witness keypai…
Federico2014 May 8, 2026
773c549
test(chainbase): cover TransactionCapsule PQ defensive branches
Federico2014 May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,14 @@ private boolean checkPermission(Permission permission) throws ContractValidateEx
long weightSum = 0;
List<ByteString> addressList = permission.getKeysList()
.stream()
.map(x -> x.getAddress())
.map(Key::getAddress)
.distinct()
.collect(toList());
if (addressList.size() != permission.getKeysList().size()) {
throw new ContractValidateException(
"address should be distinct in permission " + permission.getType());
}

for (Key key : permission.getKeysList()) {
if (!DecodeUtil.addressValid(key.getAddress().toByteArray())) {
throw new ContractValidateException("key is not a validate address");
Expand Down Expand Up @@ -237,4 +238,5 @@ public ByteString getOwnerAddress() throws InvalidProtocolBufferException {
public long calcFee() {
return chainBaseManager.getDynamicPropertiesStore().getUpdateAccountPermissionFee();
}

}
14 changes: 13 additions & 1 deletion actuator/src/main/java/org/tron/core/utils/ProposalUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -886,6 +886,17 @@ public static void validator(DynamicPropertiesStore dynamicPropertiesStore,
}
break;
}
case ALLOW_FN_DSA_512: {
if (dynamicPropertiesStore.getAllowFnDsa512() == 1) {
throw new ContractValidateException(
"[ALLOW_FN_DSA_512] has been valid, no need to propose again");
}
if (value != 1) {
throw new ContractValidateException(
"This value[ALLOW_FN_DSA_512] is only allowed to be 1");
}
break;
}
default:
break;
}
Expand Down Expand Up @@ -971,7 +982,8 @@ public enum ProposalType { // current value, value range
ALLOW_TVM_BLOB(89), // 0, 1
PROPOSAL_EXPIRE_TIME(92), // (0, 31536003000)
ALLOW_TVM_SELFDESTRUCT_RESTRICTION(94), // 0, 1
ALLOW_TVM_OSAKA(96); // 0, 1
ALLOW_TVM_OSAKA(96), // 0, 1
ALLOW_FN_DSA_512(100); // 0, 1

private long code;

Expand Down
Loading
Loading