triad-protocol 0.1.4

Triad protocol, trade solana projects
Documentation
use crate::{
    constraints::is_authority_for_ticker,
    events::TickerPriceUpdateRecord,
    state::{ Ticker, UpdateTickerPriceArgs },
};

use anchor_lang::prelude::*;

#[derive(Accounts)]
#[instruction(args: UpdateTickerPriceArgs)]
pub struct UpdateTickerPrice<'info> {
    #[account(mut)]
    pub signer: Signer<'info>,

    #[account(mut, constraint = is_authority_for_ticker(&ticker, &signer)?)]
    pub ticker: Account<'info, Ticker>,

    pub system_program: Program<'info, System>,
}

pub fn update_ticker_price(
    ctx: Context<UpdateTickerPrice>,
    args: UpdateTickerPriceArgs
) -> Result<()> {
    let ticker = &mut ctx.accounts.ticker;

    ticker.updated_ts = Clock::get()?.unix_timestamp;
    ticker.price = args.price;

    emit!(TickerPriceUpdateRecord {
        price: ticker.price,
        ticker: ticker.key(),
        ts: ticker.updated_ts,
    });

    Ok(())
}