update README. fixes #10

This commit is contained in:
czl1378 2021-01-14 20:17:25 +08:00
parent 15700a3acf
commit 9bf4f7fba7
6 changed files with 18 additions and 11 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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());

View File

@ -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();

View File

@ -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,

View File

@ -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
})
})