Commit Graph

74 Commits

Author SHA1 Message Date
Nicholas Dudfield
94ce15d233 docs(consensus): add extraction markers for guided code review
Add @@start/@@end comment markers to key RNG pipeline sections for
automated documentation extraction. No logic changes.
2026-02-13 12:47:22 +07:00
Nicholas Dudfield
61a166bcb0 feat(hooks): add dice() and random() hook APIs for consensus entropy
Port the Hook API surface from the tt-rng branch, adapted to use our
commit-reveal consensus entropy (ltCONSENSUS_ENTROPY / sfDigest).

Hook APIs:
- dice(sides): returns random int [0, sides) from consensus entropy
- random(write_ptr, write_len): fills buffer with 1-512 random bytes

Internal fairRng() derives per-execution entropy by hashing: ledger
seq + tx ID + hook hash + account + chain position + execution phase
+ consensus entropy + incrementing call counter. This ensures each
call within a single hook execution returns different values.

Quality gate: fairRng returns empty (TOO_LITTLE_ENTROPY) if fewer
than 5 validators contributed, preventing weak entropy from being
consumed by hooks.

Also adds sfEntropyCount and sfLedgerSequence to the consensus
entropy SLE and pseudo-tx, enabling the freshness and quality
checks needed by the Hook API.
2026-02-10 17:12:27 +07:00
Nicholas Dudfield
a6dd54fa48 feat(consensus): add featureConsensusEntropy amendment gating
- Register ConsensusEntropy amendment (Supported::yes, DefaultNo)
- Gate entropy pseudo-tx injection behind amendment in doAccept()
- Gate preflight with temDISABLED when amendment not enabled
- Bump numFeatures 90 -> 91
- Exclude featureConsensusEntropy from default test environment to
  avoid breaking existing test transaction count assumptions
2026-02-06 07:29:48 +07:00
Nicholas Dudfield
28bd0a22d3 feat(consensus): add entropy injection, tx ordering, and dispatch registration
- Implement injectEntropyPseudoTx() to combine reveals into final
  entropy hash and inject as pseudo-tx into CanonicalTXSet in doAccept()
- Modify BuildLedger applyTransactions() to apply entropy tx FIRST
  before all other transactions to prevent front-running
- Remove redundant explicit threading in applyConsensusEntropy() as
  sfPreviousTxnID/sfPreviousTxnLgrSeq are set automatically by
  ApplyStateTable::threadItem()
- Register ttCONSENSUS_ENTROPY in applySteps.cpp dispatch tables
  (preflight, preclaim, calculateBaseFee, apply)
- Add ltCONSENSUS_ENTROPY to InvariantCheck.cpp valid type whitelist
2026-02-06 05:43:19 +07:00
Nicholas Dudfield
960fffcf82 feat(consensus): add ttCONSENSUS_ENTROPY pseudo-transaction protocol layer
Add protocol definitions for consensus-derived entropy pseudo-transaction:
- ttCONSENSUS_ENTROPY = 105 transaction type
- ltCONSENSUS_ENTROPY = 0x0058 ledger entry type
- keylet::consensusEntropy() singleton keylet (namespace 'X')
- applyConsensusEntropy() handler in Change.cpp
- Added to isPseudoTx() in STTx.cpp

The entropy value is stored in sfDigest field of the singleton ledger object.
This provides the protocol foundation for same-ledger entropy injection.
2026-02-05 17:26:31 +07:00
RichardAH
b0fcd36bcd import_vl_keys logic fix (flap fix) (#588) 2025-10-18 16:27:05 +10:00
RichardAH
2fd465bb3f fix20250131 (#428)
Co-authored-by: Denis Angell <dangell@transia.co>
2025-02-03 10:33:19 +10:00
RichardAH
21863b05f3 Limit xahau genesis to networks starting with 2133X (#395) 2024-11-23 21:19:09 +10:00
Denis Angell
70bd7c2ce7 Reintroduce Clang-Format & Levelization (#171)
* clang-format

* levelization

* clang-format

* update workflow (#172)

* update workflow

* Update build-in-docker.yml

* fix from `clang-format`

* Update Enum.h
2023-11-01 14:12:24 +01:00
Denis Angell
e48e4db9e6 Fix TxQ tests (#151) 2023-10-25 02:38:12 +02:00
Richard Holland
69d7d653be testing CI tests without standalone check 2023-10-24 14:04:33 +00:00
RichardAH
b4022c35b3 make account starting seq the parent close time to prevent replay attacks in reset networks (#131)
* make account starting seq the parent close time to prevent replay attacks in reset networks

* add tests for activation

---------

Co-authored-by: Denis Angell <dangell@transia.co>
2023-10-09 14:18:23 +02:00
Richard Holland
b7055927b2 add non-gov distributions 2023-09-25 08:55:21 +00:00
Richard Holland
401a666f4d debug governance tests, all passing 2023-09-23 18:06:21 +00:00
Richard Holland
a6b84caea2 fix reference count on governance hook 2023-09-23 15:38:34 +00:00
Denis Angell
aa6d05c8b9 patch m1/llvm14 (#50)
* patch wasm cmake

* patch UNL Report

* patch change

* patch import

* patch invoke

* patch xahau genesis test
2023-09-19 14:41:55 +02:00
Denis Angell
89df87dec8 UNL Report tests (#100)
* Update Change.cpp

* add UNLReport Tests

* remove comments
2023-09-19 11:25:41 +02:00
Richard Holland
ab67ddeeb6 modify xahaugenesis to support l2 table setup 2023-09-15 16:16:46 +00:00
Richard Holland
5e96402770 more governance debugging 2023-09-05 20:19:26 +00:00
Richard Holland
3965ecc6c1 more wip toward governance tests 2023-08-31 10:24:45 +00:00
Richard Holland
ede561cea3 add tfTestSuite flag to ttEnableAmendment to allow governance game to be installed with test accounts 2023-08-29 13:04:24 +00:00
Richard Holland
250f4dc13b xahaugenesis tests wip 2023-08-25 14:23:25 +00:00
Richard Holland
86b765cb0f wip xahaugenesis test cases, set minimum fees ledger to 1 2023-08-24 13:53:06 +00:00
Richard Holland
c65a0332bc rework logic for bootstrap ips, parsing correctly inline comments 2023-08-24 12:26:00 +00:00
Richard Holland
e5bf299e39 ensure that XahauGenesis amendment will effectively disable DeletableAccounts 2023-08-15 10:38:51 +00:00
Richard Holland
ac009c63b1 Merge remote-tracking branch 'refs/remotes/origin/dev' into dev 2023-08-15 10:08:25 +00:00
Richard Holland
8262785c90 change B2M to include halvening logic 2023-08-15 09:47:48 +00:00
Richard Holland
f89bd966ec refactor XahauGenesis slightly, start test cases 2023-07-18 13:33:44 +00:00
Richard Holland
fc6f8dde94 initial code for HooksUpdate1, unfinished, compiling 2023-07-04 14:05:45 +00:00
Richard Holland
d6ce1add8b require ttUNL_REPORT that seeks to add ImportVLKey contain a key listed in the validator's config, untested 2023-07-04 10:12:10 +00:00
Richard Holland
ecf78bd818 more xahaugenesis debugging 2023-06-27 13:50:07 +00:00
Richard Holland
111f7d20ba update xahauGenesis amendment activation code 2023-06-27 10:03:54 +00:00
Richard Holland
0bf51e257b add accountids to unlreport 2023-06-26 11:42:43 +00:00
Richard Holland
29e733cab3 UNLReport ImportVLKey voting working 2023-06-26 08:53:26 +00:00
Richard Holland
d70ec5d2e4 change UNLReport to also run consensus on import_vl_keys, change gensisMint to also allow Governance flags and marks to be set on account root, compiling, not tested 2023-06-19 13:09:14 +00:00
Richard Holland
e397107ce9 change the UNLReport to one pk per txn, to allow consensus over the set 2023-06-15 14:09:57 +00:00
Richard Holland
034318b158 remove xpop_history, make ttUNL_REPORT well ordered 2023-06-15 13:32:26 +00:00
Richard Holland
95bef7ced3 UNLReport working 2023-06-15 09:45:11 +00:00
Richard Holland
c33e64fa3d Add UNLReport obj/pseudo txn. Tracks which validators were online and validating last 256 ledgers. 2023-06-12 12:31:00 +00:00
Richard Holland
892ba747be initial write of the xahau_genesis amendment, compiling not tested 2023-05-26 12:13:14 +00:00
Richard Holland
a5ca117ff6 Merge remote-tracking branch 'ripple/develop' into dev 2023-04-06 09:36:24 +00:00
Ed Hennis
e4b17d1cf2 XRPFees: Fee setting and handling improvements (#4247)
* Introduces amendment `XRPFees`
* Convert fee voting and protocol messages to use XRPAmounts
* Includes Validations, Change transactions, the "Fees" ledger object,
  and subscription messages

* Improve handling of 0 drop reference fee with TxQ. For use with networks that do not want to require fees
* Note that fee escalation logic is still in place, which may cause the
  open ledger fee to rise if the network is busy. 0 drop transactions
  will still queue, and fee escalation can be effectively disabled by
  modifying the configuration on all nodes

* Change default network reserves to match Mainnet

* Name the new SFields *Drops (not *XRP)
* Reserve SField IDs for Hooks

* Clarify comments explaining the ttFEE transaction field validation
2023-02-02 16:20:35 -08:00
Richard Holland
e99ffe29a3 https://github.com/XRPL-Labs/xrpld-hooks/issues/51 2022-09-19 12:48:09 +00:00
Richard Holland
0e0355cf36 Merge remote-tracking branch 'ripple/develop' into develop 2022-08-29 10:52:04 +00:00
Crypto Brad Garlinghouse
69bb2be446 Introduce amendment to handle trustlines to self:
Trustlines must be between two different accounts but two trustlines exist
where an account extends trust to itself. They were created in the early
days, likely because of bugs that have been fixed. The new fixTrustLinesToSelf
amendment will remove those trustlines when it activates.
2022-08-25 08:38:28 -07:00
Richard Holland
4244a5a245 Merge remote-tracking branch 'ripple/develop' into develop 2022-05-20 08:05:08 +00:00
Nik Bougalis
70779f6850 Introduce NFT support (XLS020) 2022-04-06 13:29:48 -07:00
Richard Holland
b33c91f761 Hooks-chaining alpha
This is a squash of 241 commits from https://github.com/XRPL-Labs/xrpld-hooks/tree/hooks-chaining
Ready for forward porting to rippled 1.8.3
2022-01-11 10:06:38 +00:00
Scott Schurr
7724cca384 Implement enhanced Ticket support:
Tickets are a mechanism to allow for the "out-of-order" execution of
transactions on the XRP Ledger.

This commit, if merged, reworks the existing support for tickets and
introduces support for 'ticket batching', completing the feature set
needed for tickets.

The code is gated under the newly-introduced `TicketBatch` amendment
and the `Tickets` amendment, which is not presently active on the
network, is being removed.

The specification for this change can be found at:
https://github.com/xrp-community/standards-drafts/issues/16
2020-09-01 08:58:57 -07:00
Peng Wang
12c0e8148b Improve naming of fields associated with the NegativeUNL 2020-08-06 10:05:43 -07:00