Transactions > 1 SOL require 3-oracle consensus
Loading recent program transactions
import { EscrowClient, KamiyoClient } from '@kamiyo/x402-sdk';
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
import { AnchorProvider } from '@coral-xyz/anchor';
// Initialize connection and wallet
const connection = new Connection('https://api.devnet.solana.com');
const wallet = Keypair.generate();
const provider = new AnchorProvider(connection, wallet, {});
// Initialize escrow client
const escrowClient = new EscrowClient(provider);
const programId = new PublicKey('E5EiaJhbg6Bav1v3P211LNv1tAqa4fHVeuGgRBHsEu6n');
// Create escrow payment
const escrowId = 'tx_' + Date.now();
const apiWallet = new PublicKey('...');
const amount = 0.01; // SOL
const tx = await escrowClient.initializeEscrow(
escrowId,
apiWallet,
amount,
provider.wallet.publicKey
);
console.log('Escrow created:', tx);
// Later: Mark disputed if quality is poor
const tx = await escrowClient.markDisputed(
escrowId,
provider.wallet.publicKey
);
console.log('Dispute filed:', tx);
from multi_oracle import MultiOracleSystem, OracleAssessment
import secrets
# Initialize multi-oracle system
system = MultiOracleSystem()
# Register oracles (10 SOL minimum stake)
for i in range(5):
key = SigningKey.generate()
system.register_oracle(key.verify_key, 10.0 + i, key)
# High-value transaction (>1 SOL) requires multi-oracle
transaction_value = 1.5
required, count = system.requires_multi_oracle(transaction_value)
if required:
# Select 3 oracles randomly
seed = secrets.token_bytes(32)
selected = system.select_oracles(count, seed)
# Calculate consensus from assessments
consensus = system.calculate_consensus(assessments)
print(f"Median Score: {consensus.median_score}/100")
print(f"Confidence: {consensus.confidence}%")
print(f"Outliers: {len(consensus.outlier_indices)}")
use anchor_lang::prelude::*;
#[program]
pub mod x402_escrow {
use super::*;
pub fn resolve_dispute(
ctx: Context,
quality_score: u8,
refund_percentage: u8,
signature: [u8; 64],
) -> Result<()> {
// Verify Ed25519 signature from oracle
verify_ed25519_signature(
&ctx.accounts.instructions_sysvar,
&signature,
&ctx.accounts.verifier.key(),
&message
)?;
// Calculate refund based on quality score
let refund = calculate_refund(
escrow.amount,
quality_score,
refund_percentage
);
// Execute refund
escrow.transfer_refund(refund)?;
Ok(())
}
}