/** * Rubicon contract * * Author: Peter Harpending * Date: 2026-08-12 */ contract Rubicon = // this could/should be a record, but records aren't really // portable across contracts/languages/APIs // // record rbx = // {ip : string, // port : int, // protocol : string, // "tcp", "udp", "sctp", etc // noise : string, // Noise_Foo_Bar_Baz_Quux // pubkey : bytes, // responder static pubkey (noise rs field) // prologue : bytes} // noise prologue (empty = no prologue) // (ip, port, protocol, noise, pubkey, prologue) type rbx_tuple = string * int * string * string * bytes * bytes type state = list(rbx_tuple) entrypoint init(tuples: list(rbx_tuple)): state = tuples stateful entrypoint set(tuples: list(rbx_tuple)): unit = require(Call.caller == Contract.creator, "Not allowed") put(tuples) entrypoint lookup(): list(rbx_tuple) = state