Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
0af0835
fix: restore cross-account lookup resolution at round boundaries
adiman9 Mar 16, 2026
1f24846
chore: Bump cargo lock
adiman9 Mar 16, 2026
f6c9f96
refactor: remove duplicate URL path qualification in nested struct re…
adiman9 Mar 16, 2026
768c407
feat: add Keccak256 hashing and slot hash caching
adiman9 Mar 17, 2026
a11c669
feat: add skip_resolvers mechanism for stale data reprocessing
adiman9 Mar 17, 2026
0b8681e
feat: improve slot scheduler with notification-based waiting and enha…
adiman9 Mar 17, 2026
2f23205
feat: add Yellowstone gRPC dependencies and update Ore examples
adiman9 Mar 17, 2026
a426edb
feat: Add rt-multi-thread
adiman9 Mar 17, 2026
e83b003
fix: Remove debugging
adiman9 Mar 17, 2026
432deed
chore: Remove excessive debug logging from resolver pipeline
adiman9 Mar 17, 2026
e4dcf1c
fix: Add optional chaining for safer property access in Ore examples
adiman9 Mar 17, 2026
d46ab22
feat: Enable treasury streaming in TypeScript example
adiman9 Mar 17, 2026
1115054
feat: Update Ore stack IDL with program address and formatting
adiman9 Mar 17, 2026
b05ae9b
fix: Core interpreter and server improvements
adiman9 Mar 17, 2026
3d8d5d3
fix: Ore react
adiman9 Mar 17, 2026
42460d2
fix: keep gRPC subscription sender alive to prevent stream termination
adiman9 Mar 18, 2026
f391581
fix(tests): replace diagnostic println with assertion for discriminan…
adiman9 Mar 18, 2026
7da11f7
fix: restore type safety in ore-typescript example
adiman9 Mar 18, 2026
d1a7887
refactor: remove redundant CpiEvent check in AbortIfNullKey
adiman9 Mar 18, 2026
94249ba
fix: use BTreeMap for slot hash cache to ensure oldest entries are ev…
adiman9 Mar 18, 2026
c8b26d5
fix: implement discriminant size inference and fix test failures
adiman9 Mar 18, 2026
32bc632
chore: Update ore sdk
adiman9 Mar 18, 2026
c19d1ec
fix: resolve clippy warnings across workspace
adiman9 Mar 19, 2026
8d98359
fix: add missing return to AbortIfNullKey opcode
adiman9 Mar 19, 2026
f1a6755
refactor: remove application-specific debug logging from generic VM
adiman9 Mar 19, 2026
3525397
fix: prevent panic in SlotHash resolver when using current_thread run…
adiman9 Mar 19, 2026
358d9bd
fix: correct SlotHashResolver TypeScript types to match actual return…
adiman9 Mar 19, 2026
4d283f2
fix: align Steel discriminant size with get_discriminator return value
adiman9 Mar 19, 2026
d67b727
fix: use dynamic-length discriminator slice in generated code
adiman9 Mar 19, 2026
172f594
chore: Update ore stack
adiman9 Mar 19, 2026
34e888d
chore: Ore stack
adiman9 Mar 19, 2026
b951519
fix: add optional chaining for null safety in ore-react components
adiman9 Mar 19, 2026
8c8875b
fix: conditionally enable TLS only for https/grpcs endpoints in slot …
adiman9 Mar 19, 2026
10ff8aa
fix: prevent silent byte truncation in json_array_to_bytes
adiman9 Mar 19, 2026
32a4e5e
refactor: remove dead _trigger_info allocation in QueueResolver opcode
adiman9 Mar 19, 2026
97f2bbe
refactor: remove unreachable hash length check in keccak256 resolver
adiman9 Mar 19, 2026
462230f
fix: reduce MAX_CACHE_SIZE from 50k to 1k
adiman9 Mar 19, 2026
2ef8917
fix: use resolver schema types for computed fields in TypeScript gene…
adiman9 Mar 19, 2026
03e00aa
fix: remove unnecessary async from parse_and_cache_slot_hashes
adiman9 Mar 19, 2026
77d2566
fix: change any() to all() for Steel-style IDL detection
adiman9 Mar 19, 2026
b3e6dac
fix: replace unnecessary unwrap with if let pattern
adiman9 Mar 19, 2026
99427f6
fix: prevent integer overflow in SlotHashes sysvar parsing
adiman9 Mar 19, 2026
abad594
fix: prevent empty instruction arrays from being misclassified as Ste…
adiman9 Mar 19, 2026
9f07692
fix: serialize pre_reveal_rng as string to avoid JS precision loss
adiman9 Mar 19, 2026
927b364
fix: derive state_id from bytecode routing for PDA cache
adiman9 Mar 19, 2026
1de4227
chore: Ore stack
adiman9 Mar 19, 2026
5d28937
fix: TypeScript generator now correctly types computed fields using r…
adiman9 Mar 19, 2026
b37ef43
fix: correct resolver output types and schema generation in TypeScrip…
adiman9 Mar 19, 2026
663f85e
chore: fix clippy for-kv-map lint in typescript field_mappings loop
adiman9 Mar 19, 2026
5f423da
fix: Ore sdk
adiman9 Mar 19, 2026
0129f75
fix: use BTreeMap in ResolverRegistry to ensure deterministic SDK output
adiman9 Mar 19, 2026
eb396c9
chore: Ore stack
adiman9 Mar 19, 2026
f4de6ef
fix: replace silent u8 truncation of Steel discriminant with try_from
adiman9 Mar 19, 2026
247ffa3
fix: wrap slot hash bytes in object to match SlotHashBytes schema
adiman9 Mar 19, 2026
1b59633
fix: cache account data for all entity states that route an event type
adiman9 Mar 19, 2026
7dae442
refactor: replace AbortIfNullKey is_account string heuristic with str…
adiman9 Mar 19, 2026
fa09ef9
fix: replace panicking expect with graceful fallback in get_discrimin…
adiman9 Mar 19, 2026
7c60332
refactor: replace string-scanning in is_output_type with explicit ext…
adiman9 Mar 19, 2026
1f67a7a
fix: serialize u64-from-bytes computed fields as strings to avoid JS …
adiman9 Mar 19, 2026
7af4cf3
fix: Keccak types
adiman9 Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,535 changes: 2,382 additions & 153 deletions Cargo.lock

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ yellowstone-vixen = "0.6.0-alpha.0"
yellowstone-vixen-core = "0.6.0-alpha.0"
yellowstone-vixen-proto = "0.6.0-alpha.0"
yellowstone-vixen-yellowstone-grpc-source = "0.6.0-alpha.0"
# Yellowstone gRPC client (for standalone slot subscriptions)
yellowstone-grpc-client = "9.1.0"
yellowstone-grpc-proto = "9.1.0"
10 changes: 5 additions & 5 deletions examples/ore-react/src/components/BlockGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ interface BlockGridProps {

export function BlockGrid({ round }: BlockGridProps) {
const blocks = round
? round.state.deployed_per_square_ui.map((deployedUi, i) => ({
? (round.state?.deployed_per_square_ui || []).map((deployedUi, i) => ({
id: i + 1,
minerCount: round.state.count_per_square[i],
minerCount: round.state?.count_per_square?.[i],
deployedUi,
isWinner: round.results?.winning_square === i,
isWinner: (round.results?.winning_square === i) || (round.results?.pre_reveal_winning_square === i),
}))
: Array.from({ length: 25 }, (_, i) => ({
id: i + 1,
Expand All @@ -21,9 +21,9 @@ export function BlockGrid({ round }: BlockGridProps) {
}));

return (
<div
<div
className="grid grid-cols-5 gap-2"
style={{
style={{
height: 'calc(100vh - 120px)',
width: 'calc((100vh - 120px - 4 * 0.5rem) / 5 * 5 + 4 * 0.5rem)'
}}
Expand Down
10 changes: 5 additions & 5 deletions examples/ore-react/src/components/StatsPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export function StatsPanel({ round, treasuryMotherlode, isConnected }: StatsPane
const [timeRemaining, setTimeRemaining] = useState<string>('00:00');

useEffect(() => {
const expiresAtUnix = round?.state.estimated_expires_at_unix;
const expiresAtUnix = round?.state?.estimated_expires_at_unix;
if (!expiresAtUnix) {
setTimeRemaining('00:00');
return;
Expand All @@ -35,7 +35,7 @@ export function StatsPanel({ round, treasuryMotherlode, isConnected }: StatsPane
updateTimer();
const interval = setInterval(updateTimer, 1000);
return () => clearInterval(interval);
}, [round?.state.estimated_expires_at_unix]);
}, [round?.state?.estimated_expires_at_unix]);

return (
<div className="flex flex-col gap-6 h-full">
Expand All @@ -56,7 +56,7 @@ export function StatsPanel({ round, treasuryMotherlode, isConnected }: StatsPane
<div className="bg-white dark:bg-stone-800 rounded-2xl p-6 shadow-sm dark:shadow-none dark:ring-1 dark:ring-stone-700">
<div className="flex items-center gap-2 text-2xl font-semibold text-stone-800 dark:text-stone-100">
<SolanaIcon size={20} />
<span>{round ? round.state.total_deployed.toFixed(4) : '0.0000'}</span>
<span>{round ? round.state?.total_deployed?.toFixed(4) : '0.0000'}</span>
</div>
<div className="text-base text-stone-500 dark:text-stone-400 mt-2">Total deployed</div>
</div>
Expand All @@ -70,11 +70,11 @@ export function StatsPanel({ round, treasuryMotherlode, isConnected }: StatsPane
</div>

<div className="flex items-center gap-4 px-2 text-base text-stone-500 dark:text-stone-400 mt-auto">
<span>Round {round?.id.round_id ?? '–'}</span>
<span>Round {round?.id?.round_id ?? '–'}</span>
{round && (
<>
<span className="text-stone-300 dark:text-stone-600">·</span>
<span>{round.state.total_miners} miners</span>
<span>{round.state?.total_miners} miners</span>
</>
)}
</div>
Expand Down
Loading
Loading