mirror of
https://github.com/Xahau/xahaud.git
synced 2026-07-28 09:30:10 +00:00
Implement native support for Price Oracles. A Price Oracle is used to bring real-world data, such as market prices, onto the blockchain, enabling dApps to access and utilize information that resides outside the blockchain. Add Price Oracle functionality: - OracleSet: create or update the Oracle object - OracleDelete: delete the Oracle object To support this functionality add: - New RPC method, `get_aggregate_price`, to calculate aggregate price for a token pair of the specified oracles - `ltOracle` object The `ltOracle` object maintains: - Oracle Owner's account - Oracle's metadata - Up to ten token pairs with the scaled price - The last update time the token pairs were updated Add Oracle unit-tests
This commit is contained in:
@@ -91,6 +91,7 @@ CONSTRUCT_UNTYPED_SFIELD(sfMetadata, "Metadata", METADATA
|
||||
CONSTRUCT_TYPED_SFIELD(sfCloseResolution, "CloseResolution", UINT8, 1);
|
||||
CONSTRUCT_TYPED_SFIELD(sfMethod, "Method", UINT8, 2);
|
||||
CONSTRUCT_TYPED_SFIELD(sfTransactionResult, "TransactionResult", UINT8, 3);
|
||||
CONSTRUCT_TYPED_SFIELD(sfScale, "Scale", UINT8, 4);
|
||||
|
||||
// 8-bit integers (uncommon)
|
||||
CONSTRUCT_TYPED_SFIELD(sfTickSize, "TickSize", UINT8, 16);
|
||||
@@ -128,6 +129,7 @@ CONSTRUCT_TYPED_SFIELD(sfTransferRate, "TransferRate", UINT32,
|
||||
CONSTRUCT_TYPED_SFIELD(sfWalletSize, "WalletSize", UINT32, 12);
|
||||
CONSTRUCT_TYPED_SFIELD(sfOwnerCount, "OwnerCount", UINT32, 13);
|
||||
CONSTRUCT_TYPED_SFIELD(sfDestinationTag, "DestinationTag", UINT32, 14);
|
||||
CONSTRUCT_TYPED_SFIELD(sfLastUpdateTime, "LastUpdateTime", UINT32, 15);
|
||||
|
||||
// 32-bit integers (uncommon)
|
||||
CONSTRUCT_TYPED_SFIELD(sfHighQualityIn, "HighQualityIn", UINT32, 16);
|
||||
@@ -166,6 +168,7 @@ CONSTRUCT_TYPED_SFIELD(sfVoteWeight, "VoteWeight", UINT32,
|
||||
CONSTRUCT_TYPED_SFIELD(sfLockCount, "LockCount", UINT32, 49);
|
||||
|
||||
CONSTRUCT_TYPED_SFIELD(sfFirstNFTokenSequence, "FirstNFTokenSequence", UINT32, 50);
|
||||
CONSTRUCT_TYPED_SFIELD(sfOracleDocumentID, "OracleDocumentID", UINT32, 51);
|
||||
|
||||
CONSTRUCT_TYPED_SFIELD(sfXahauActivationLgrSeq, "XahauActivationLgrSeq",UINT32, 96);
|
||||
CONSTRUCT_TYPED_SFIELD(sfImportSequence, "ImportSequence", UINT32, 97);
|
||||
@@ -196,6 +199,7 @@ CONSTRUCT_TYPED_SFIELD(sfReferenceCount, "ReferenceCount", UINT64,
|
||||
CONSTRUCT_TYPED_SFIELD(sfXChainClaimID, "XChainClaimID", UINT64, 20);
|
||||
CONSTRUCT_TYPED_SFIELD(sfXChainAccountCreateCount, "XChainAccountCreateCount", UINT64, 21);
|
||||
CONSTRUCT_TYPED_SFIELD(sfXChainAccountClaimCount, "XChainAccountClaimCount", UINT64, 22);
|
||||
CONSTRUCT_TYPED_SFIELD(sfAssetPrice, "AssetPrice", UINT64, 23);
|
||||
CONSTRUCT_TYPED_SFIELD(sfTouchCount, "TouchCount", UINT64, 97);
|
||||
CONSTRUCT_TYPED_SFIELD(sfAccountIndex, "AccountIndex", UINT64, 98);
|
||||
CONSTRUCT_TYPED_SFIELD(sfAccountCount, "AccountCount", UINT64, 99);
|
||||
@@ -321,6 +325,8 @@ CONSTRUCT_TYPED_SFIELD(sfHookParameterValue, "HookParameterValue", VL,
|
||||
CONSTRUCT_TYPED_SFIELD(sfBlob, "Blob", VL, 26);
|
||||
CONSTRUCT_TYPED_SFIELD(sfDIDDocument, "DIDDocument", VL, 27);
|
||||
CONSTRUCT_TYPED_SFIELD(sfData, "Data", VL, 28);
|
||||
CONSTRUCT_TYPED_SFIELD(sfAssetClass, "AssetClass", VL, 29);
|
||||
CONSTRUCT_TYPED_SFIELD(sfProvider, "Provider", VL, 30);
|
||||
CONSTRUCT_TYPED_SFIELD(sfRemarkValue, "RemarkValue", VL, 98);
|
||||
CONSTRUCT_TYPED_SFIELD(sfRemarkName, "RemarkName", VL, 99);
|
||||
|
||||
@@ -357,6 +363,10 @@ CONSTRUCT_TYPED_SFIELD(sfURITokenIDs, "URITokenIDs", VECTOR25
|
||||
// path set
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfPaths, "Paths", PATHSET, 1);
|
||||
|
||||
// currency
|
||||
CONSTRUCT_TYPED_SFIELD(sfBaseAsset, "BaseAsset", CURRENCY, 1);
|
||||
CONSTRUCT_TYPED_SFIELD(sfQuoteAsset, "QuoteAsset", CURRENCY, 2);
|
||||
|
||||
// issue
|
||||
CONSTRUCT_TYPED_SFIELD(sfLockingChainIssue, "LockingChainIssue", ISSUE, 1);
|
||||
CONSTRUCT_TYPED_SFIELD(sfIssuingChainIssue, "IssuingChainIssue", ISSUE, 2);
|
||||
@@ -405,6 +415,7 @@ CONSTRUCT_UNTYPED_SFIELD(sfXChainClaimAttestationCollectionElement,
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfXChainCreateAccountAttestationCollectionElement,
|
||||
"XChainCreateAccountAttestationCollectionElement",
|
||||
OBJECT, 31);
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfPriceData, "PriceData", OBJECT, 32);
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfRemark, "Remark", OBJECT, 97);
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfGenesisMint, "GenesisMint", OBJECT, 96);
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfActiveValidator, "ActiveValidator", OBJECT, 95);
|
||||
@@ -439,7 +450,8 @@ CONSTRUCT_UNTYPED_SFIELD(sfXChainClaimAttestations,
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfXChainCreateAccountAttestations,
|
||||
"XChainCreateAccountAttestations",
|
||||
ARRAY, 22);
|
||||
// 23 and 24 are unused and available for use
|
||||
// 23 is unused and available for use
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfPriceDataSeries, "PriceDataSeries", ARRAY, 24);
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfAuthAccounts, "AuthAccounts", ARRAY, 25);
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfRemarks, "Remarks", ARRAY, 97);
|
||||
CONSTRUCT_UNTYPED_SFIELD(sfGenesisMints, "GenesisMints", ARRAY, 96);
|
||||
|
||||
Reference in New Issue
Block a user