update README. fixes #10
This commit is contained in:
parent
15700a3acf
commit
9bf4f7fba7
|
@ -54,7 +54,8 @@ yarn solink add-aggregator \
|
|||
--feedName btc:usd \
|
||||
--submitInterval 6 \
|
||||
--minSubmissionValue 0 \
|
||||
--maxSubmissionValue 18446744073709551615
|
||||
--maxSubmissionValue 18446744073709551615 \
|
||||
--submissionDecimals 2
|
||||
|
||||
feed initialized, pubkey: 2jReuMRoYi3pKTF8YLnZEvT2bXcw56SdBxvssrVzu41v
|
||||
```
|
||||
|
@ -97,7 +98,8 @@ Start submitting data from a price feed (e.g. coinbase BTC-USDT):
|
|||
```
|
||||
yarn solink feed \
|
||||
--feedAddress 2jReuMRoYi3pKTF8YLnZEvT2bXcw56SdBxvssrVzu41v \
|
||||
--oracleAddress 4jWLbd2Vm98RrqunVvaSXZuP1AFbgQSM2hAHMvZSdNCu
|
||||
--oracleAddress 4jWLbd2Vm98RrqunVvaSXZuP1AFbgQSM2hAHMvZSdNCu \
|
||||
--pairSymbol BTC/USD
|
||||
```
|
||||
|
||||
## Read price
|
||||
|
|
|
@ -38,7 +38,7 @@ pub enum Instruction {
|
|||
/// max submission value
|
||||
max_submission_value: u64,
|
||||
/// submission decimals
|
||||
submission_decimals: u32,
|
||||
submission_decimals: u8,
|
||||
/// A short description of what is being reported
|
||||
description: [u8; 32],
|
||||
},
|
||||
|
@ -126,7 +126,7 @@ pub fn initialize(
|
|||
submit_interval: u32,
|
||||
min_submission_value: u64,
|
||||
max_submission_value: u64,
|
||||
submission_decimals: u32,
|
||||
submission_decimals: u8,
|
||||
description: [u8; 32],
|
||||
) -> SolInstruction {
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ impl Processor {
|
|||
submit_interval: u32,
|
||||
min_submission_value: u64,
|
||||
max_submission_value: u64,
|
||||
submission_decimals: u32,
|
||||
submission_decimals: u8,
|
||||
description: [u8; 32],
|
||||
) -> ProgramResult {
|
||||
let account_info_iter = &mut accounts.iter();
|
||||
|
@ -86,7 +86,7 @@ impl Processor {
|
|||
}
|
||||
|
||||
let rent = &Rent::from_account_info(rent_info)?;
|
||||
|
||||
|
||||
let mut aggregator = Aggregator::unpack_unchecked(&aggregator_info.data.borrow())?;
|
||||
if aggregator.is_initialized {
|
||||
return Err(Error::AlreadyInUse.into());
|
||||
|
|
|
@ -19,11 +19,9 @@ pub struct Aggregator {
|
|||
/// max submission value
|
||||
pub max_submission_value: u64,
|
||||
/// submission decimals
|
||||
pub submission_decimals: u32,
|
||||
pub submission_decimals: u8,
|
||||
/// description
|
||||
pub description: [u8; 32],
|
||||
/// decimals
|
||||
pub decimals: u32,
|
||||
/// is initialized
|
||||
pub is_initialized: bool,
|
||||
/// authority
|
||||
|
@ -41,7 +39,7 @@ impl IsInitialized for Aggregator {
|
|||
impl Sealed for Aggregator {}
|
||||
impl Pack for Aggregator {
|
||||
// 48 is submission packed length
|
||||
const LEN: usize = 85 + MAX_ORACLES * 48;
|
||||
const LEN: usize = 86 + MAX_ORACLES * 48;
|
||||
|
||||
fn pack_into_slice(&self, dst: &mut [u8]) {
|
||||
let data = self.try_to_vec().unwrap();
|
||||
|
|
|
@ -21,6 +21,7 @@ export const AggregatorLayout = BufferLayout.struct([
|
|||
BufferLayout.blob(4, "submitInterval"),
|
||||
uint64("minSubmissionValue"),
|
||||
uint64("maxSubmissionValue"),
|
||||
BufferLayout.u8("submissionDecimals"),
|
||||
BufferLayout.blob(32, "description"),
|
||||
BufferLayout.u8("isInitialized"),
|
||||
publicKey('owner'),
|
||||
|
@ -47,6 +48,7 @@ interface InitializeParams {
|
|||
submitInterval: number;
|
||||
minSubmissionValue: bigint;
|
||||
maxSubmissionValue: bigint;
|
||||
submissionDecimals: number;
|
||||
description: string;
|
||||
owner: Account;
|
||||
}
|
||||
|
@ -140,6 +142,7 @@ export default class FluxAggregator extends BaseProgram {
|
|||
submitInterval,
|
||||
minSubmissionValue,
|
||||
maxSubmissionValue,
|
||||
submissionDecimals,
|
||||
owner,
|
||||
} = params;
|
||||
|
||||
|
@ -151,6 +154,7 @@ export default class FluxAggregator extends BaseProgram {
|
|||
BufferLayout.blob(4, "submitInterval"),
|
||||
uint64("minSubmissionValue"),
|
||||
uint64("maxSubmissionValue"),
|
||||
BufferLayout.u8("submissionDecimals"),
|
||||
BufferLayout.blob(32, "description"),
|
||||
]);
|
||||
|
||||
|
@ -162,6 +166,7 @@ export default class FluxAggregator extends BaseProgram {
|
|||
submitInterval: buf,
|
||||
minSubmissionValue: u64LEBuffer(minSubmissionValue),
|
||||
maxSubmissionValue: u64LEBuffer(maxSubmissionValue),
|
||||
submissionDecimals,
|
||||
description: Buffer.from(description),
|
||||
}, [
|
||||
SYSVAR_RENT_PUBKEY,
|
||||
|
|
|
@ -135,12 +135,13 @@ cli
|
|||
.description("create an aggregator")
|
||||
.option("--feedName <string>", "feed pair name")
|
||||
.option("--submitInterval <number>", "min wait time between submissions", "6")
|
||||
.option("--submissionDecimals <number>", "submission decimals", "12")
|
||||
.option("--minSubmissionValue <number>", "minSubmissionValue", "0")
|
||||
.option("--maxSubmissionValue <number>", "maxSubmissionValue", "18446744073709551615")
|
||||
.action(async (opts) => {
|
||||
const { deployer, wallet, aggregatorProgramAccount: aggregatorProgram } = await AppContext.forAdmin()
|
||||
|
||||
const { feedName, submitInterval, minSubmissionValue, maxSubmissionValue } = opts
|
||||
const { feedName, submitInterval, minSubmissionValue, maxSubmissionValue, submissionDecimals } = opts
|
||||
|
||||
const aggregator = new FluxAggregator(wallet, aggregatorProgram.publicKey)
|
||||
|
||||
|
@ -150,6 +151,7 @@ cli
|
|||
minSubmissionValue: BigInt(minSubmissionValue),
|
||||
maxSubmissionValue: BigInt(maxSubmissionValue),
|
||||
description: feedName.substr(0, 32).padEnd(32),
|
||||
submissionDecimals,
|
||||
owner: wallet.account
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue