Commit Graph

1060 Commits

Author SHA1 Message Date
Richard Holland
0f83256ffa change deletable account disable logic, fix test cases 2023-08-17 12:31:28 +00:00
Richard Holland
e5bf299e39 ensure that XahauGenesis amendment will effectively disable DeletableAccounts 2023-08-15 10:38:51 +00:00
Richard Holland
8262785c90 change B2M to include halvening logic 2023-08-15 09:47:48 +00:00
Denis Angell
c36683a825 XRPLF review of XLS34 (#69)
* add amendment guard for sfTransferRate

* make `sfTransferRate` optional

* split tests into existing / xls34

* make variables `const`

* clang-format

* chage error code

* guard optional `sfTransferRate`

* rename tests

* Guard Optional sfTransferRate

* clang-format

* fixup tests
2023-07-17 12:12:36 +02:00
Richard Holland
e9fc4ced98 update URIToken to support setting a sell offer during minting 2023-07-13 13:00:23 +00:00
Richard Holland
076b8e3e11 example burn2mint xls20->uritoken 2023-07-11 21:06:48 +00:00
Richard Holland
96af8735ba add sfHookEmissions to metadata, compiling untested 2023-07-11 19:58:45 +00:00
Richard Holland
234d811ce3 add issuer field to ttIMPORT, ensure that import pays a fee in every case except a first import against an account that doesn't exist and where the import doesn't specify an Issuer 2023-07-11 08:33:38 +00:00
Richard Holland
fc6f8dde94 initial code for HooksUpdate1, unfinished, compiling 2023-07-04 14:05:45 +00:00
Richard Holland
338b646a3d build for v3 2023-07-03 09:31:55 +00:00
Richard Holland
ecf78bd818 more xahaugenesis debugging 2023-06-27 13:50:07 +00:00
RichardAH
b64650af71 Merge pull request #70 from Xahau/governance_hook_l2
Governance hook l2
2023-06-26 15:10:46 +02: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
Denis Angell
de03278927 cont tests.. 2023-06-15 23:01:10 +00:00
Denis Angell
f42d9124df setup import test 2023-06-15 23:01:09 +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
1ae08afb02 genesis mint working 2023-06-05 12:08:59 +00:00
Richard Holland
01e298befe Merge branch 'genesis_amendment' into governance_hook_l2 2023-06-05 09:53:20 +00:00
Richard Holland
58d71b8c96 update invariant check for ttGENESIS_MINT, update tx structure too 2023-06-05 09:53:03 +00:00
Richard Holland
4c6fd4785d WIP: governance hook rework and ttGENESIS_MINT 2023-06-01 13:32:12 +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
48c1c21542 ensure import vl seq number is recorded and checked 2023-05-25 11:50:34 +00:00
RichardAH
131bd9f4b3 ttImport (#65)
Add support for Burn2Mint and key import from original XRPL network in new txn type: ttIMPORT. Needs further testing.
2023-05-22 15:06:05 +02:00
Denis Angell
0b32a1429e fix uritoken jss 2023-04-06 17:01:28 +00:00
Denis Angell
f0d0909eb2 Definitions Sync (#61) 2023-04-06 17:01:28 +00:00
Denis Angell
f9af9ac6c8 ledger and account rpc tests (#62) 2023-04-06 17:01:12 +00:00
Denis Angell
e71137fe4a cherry-ff (#52)
Co-authored-by: Richard Holland <richard.holland@starstone.co.nz>
2023-04-06 17:00:31 +00:00
Richard Holland
a56034b47c Fix FeeUint64->XRPAmount mismatch after merge 2023-04-06 12:43:12 +00:00
Richard Holland
311d0b8bf1 Revert "Use the Conan package manager (#4367)"
This reverts commit c3a9f3dbf3.
2023-04-06 09:46:00 +00:00
Richard Holland
a5ca117ff6 Merge remote-tracking branch 'ripple/develop' into dev 2023-04-06 09:36:24 +00:00
drlongle
5ebcaf0a6c Add account flags to account_info response: (#4459)
Previously, the object `account_data` in the `account_info` response
contained a single field `Flags` that contains flags of an account. API
consumers must perform bitwise operations on this field to retrieve the
account flags.

This change adds a new object, `account_flags`, at the top level of the
`account_info` response `result`. The object contains relevant flags of
the account. This makes it easier to write simple code to check a flag's
value.

The flags included may depend on the amendments that are enabled.

Fix #2457.
2023-03-30 11:46:18 -07:00
Ed Hennis
66627b26cf Refactor fee initialization and configuration: (#4319)
* Create the FeeSettings object in genesis ledger.
* Initialize with default values from the config. Removes the need to
  pass a Config down into the Ledger initialization functions, including
  setup().
* Drop the undocumented fee config settings in favor of the [voting]
  section.
  * Fix #3734.
  * If you previously used fee_account_reserve and/or fee_owner_reserve,
    you should change to using the [voting] section instead. Example:

```
[voting]
account_reserve=10000000
owner_reserve=2000000
```

* Because old Mainnet ledgers (prior to 562177 - yes, I looked it up)
  don't have FeeSettings, some of the other ctors will default them to
  the config values before setup() tries to load the object.
* Update default Config fee values to match Mainnet.
* Fix unit tests:
  * Updated fees: Some tests are converted to use computed values of fee
    object, but the default Env config was also updated to fix the rest.
  * Unit tests that check the structure of the ledger have updated
    hashes and counts.
2023-03-28 09:03:25 -07:00
Ed Hennis
7aad6e5127 feat: mark 4 amendments as obsolete: (#4291)
Add the ability to mark amendments as obsolete. There are some known
amendments that should not be voted for because they are broken (or
similar reasons).

This commit marks four amendments as obsolete:

1. `CryptoConditionsSuite`
2. `NonFungibleTokensV1`
3. `fixNFTokenDirV1`
4. `fixNFTokenNegOffer`

When an amendment is `Obsolete`, voting for the amendment is prevented.
A determined operator can still vote for the amendment by changing the
source, and doing so does not break any protocol rules.

The "feature" command now does not modify the vote for obsolete
amendments.

Before this change, there were two options for an amendment's
`DefaultVote` behavior: yes and no.

After this change, there are three options for an amendment's
`VoteBehavior`: DefaultYes, DefaultNo, and Obsolete.

To be clear, if an obsolete amendment were to (somehow) be activated by
consensus, the server still has the code to process transactions
according to that amendment, and would not be amendment blocked. It
would function the same as if it had been voting "no" on the amendment.

Resolves #4014.

Incorporates review feedback from @scottschurr.
2023-03-23 22:28:53 -07:00
Richard Holland
24384be242 allow nops to be specified in emitted txns 2023-03-23 12:05:44 +00:00
Elliot Lee
acb373280b Merge branch 'master' (1.10.1) into develop 2023-03-22 11:13:36 -07:00
Elliot Lee
4f506599f6 Set version to 1.10.1
* Add release notes
2023-03-22 09:27:56 -07:00
Elliot Lee
383f1b6ab3 Set version to 1.10.1-rc1 2023-03-21 11:14:20 -07:00
Elliot Lee
9fcb28acad docs: update protocol README (#4457) 2023-03-21 08:01:47 -07:00
Shawn Xie
305c9a8d61 fixNFTokenRemint: prevent NFT re-mint: (#4406)
Without the protocol amendment introduced by this commit, an NFT ID can
be reminted in this manner:

1. Alice creates an account and mints an NFT.
2. Alice burns the NFT with an `NFTokenBurn` transaction.
3. Alice deletes her account with an `AccountDelete` transaction.
4. Alice re-creates her account.
5. Alice mints an NFT with an `NFTokenMint` transaction with params:
   `NFTokenTaxon` = 0, `Flags` = 9).

This will mint a NFT with the same `NFTokenID` as the one minted in step
1. The params that construct the NFT ID will cause a collision in
`NFTokenID` if their values are equal before and after the remint.

With the `fixNFTokenRemint` amendment, there is a new sequence number
construct which avoids this scenario:

- A new `AccountRoot` field, `FirstNFTSequence`, stays constant over
  time.
  - This field is set to the current account sequence when the account
    issues their first NFT.
  - Otherwise, it is not set.
- The sequence of a newly-minted NFT is computed by: `FirstNFTSequence +
  MintedNFTokens`.
  - `MintedNFTokens` is then incremented by 1 for each mint.

Furthermore, there is a new account deletion restriction:

- An account can only be deleted if `FirstNFTSequence + MintedNFTokens +
  256` is less than the current ledger sequence.
  - 256 was chosen because it already exists in the current account
    deletion constraint.

Without this restriction, an NFT may still be remintable. Example
scenario:

1. Alice's account sequence is at 1.
2. Bob is Alice's authorized minter.
3. Bob mints 500 NFTs for Alice. The NFTs will have sequences 1-501, as
   NFT sequence is computed by `FirstNFTokenSequence + MintedNFTokens`).
4. Alice deletes her account at ledger 257 (as required by the existing
   `AccountDelete` amendment).
5. Alice re-creates her account at ledger 258.
6. Alice mints an NFT. `FirstNFTokenSequence` initializes to her account
   sequence (258), and `MintedNFTokens` initializes as 0. This
   newly-minted NFT would have a sequence number of 258, which is a
   duplicate of what she issued through authorized minting before she
   deleted her account.

---------

Signed-off-by: Shawn Xie <shawnxie920@gmail.com>
2023-03-20 14:47:46 -07:00
Elliot Lee
0f1ffff068 Set version to 1.10.1-b1 2023-03-14 21:21:50 -07:00
drlongle
84cde3ce0b Use <=> operator for base_uint, Issue, and Book: (#4411)
- Implement the `operator==` and the `operator<=>` (aka the spaceship
  operator) in `base_uint`, `Issue`, and `Book`. 
- C++20-compliant compilers automatically provide the remaining
  comparison operators (e.g. `operator<`, `operator<=`, ...).
- Remove the function compare() because it is no longer needed.
- Maintain the same semantics as the existing code.
- Add some unit tests to gain further confidence.
- Fix #2525.
2023-03-14 20:54:54 -07:00
Elliot Lee
07f047b1e2 Set version to 1.10.0
Merge #4451
2023-03-14 09:30:22 -07:00
Richard Holland
cd8faf611c fix naming of URIToken jss, change IOUEscrow and URIToken to default no 2023-03-13 10:40:34 +00:00
Richard Holland
2b1727fb05 add optional destination tag to ttINVOKE 2023-03-06 09:48:13 +00:00
Elliot Lee
8687b5c3c9 Set version to 1.10.0-rc4 2023-03-02 14:28:08 -08:00