0.5.0-u20.0 • Published 7 months ago

@agoric/casting v0.5.0-u20.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
7 months ago

Agoric Casting

This Agoric Casting package follows ocap broadcasts in a flexible, future-proof way.

TL;DR: You can run yarn demo, or to follow a mailbox castingSpec do:

npx agoric follow -Bhttp://devnet.agoric.net/network-config :mailbox.agoric1foobarbaz -otext

An example of following an on-chain mailbox in code (using this package) is:

// First, obtain a Hardened JS environment via Endo.
import '@endo/init/pre-remoting.js'; // needed only for the next line
import '@agoric/castingSpec/node-fetch-shim.js'; // needed for Node.js
import '@endo/init';

import {
  iterateLatest,
  makeFollower,
  makeLeader,
  makeCastingSpec,
} from '@agoric/casting';

// Iterate over a mailbox follower on the devnet.
const leader = makeLeader('https://devnet.agoric.net/network-config');
const castingSpec = makeCastingSpec(':mailbox.agoric1foobarbaz');
const follower = makeFollower(leader, castingSpec);
for await (const { value } of iterateLatest(follower)) {
  console.log(`here's a mailbox value`, value);
}

Follower options

The followerOpts argument in makeFollower(leader, key, followerOpts) provides an optional bag of options:

  • the integrity option, which has three possibilities:
    • 'strict' - release data only after proving it was validated (may incur waits for one block's data to be validated in the next block),
    • 'optimistic' (default) - release data immediately, but may crash the follower in the future if an already-released value could not be proven,
    • 'none' - release data immediately without validation
  • the decode option is a function to translate buf: Uint8Array into data: string
    • (default) - interpret buf as a utf-8 string, then JSON.parse it
  • the unserializer option can be
    • (default) - release unserialized objects using @agoric/marshal's makeMarshal()
    • null - don't additionally unserialize data before releasing it
    • any unserializer object supporting E(unserializer).unserialize(data)
  • the crasher option can be
    • null (default) follower failures only propagate an exception/rejection
    • any crasher object supporting E(crasher).crash(reason)

Behind the scenes

  • the network config contains enough information to obtain Tendermint RPC nodes for a given Agoric network. You can use makeLeaderFromRpcAddresses directly if you want to avoid fetching a network-config.
  • each follower uses periodic CosmJS state polling (every X milliseconds) which can be refreshed more expediently via a Tendermint subscription to the corresponding state_change event
  • published (string) values are automatically unmarshalled, but without object references. a custom marshaller for your application.
  • the iterateRecent adapter transforms a follower into a local async iterator that produces only the last queried value (with no history reconstruction)

Status

This package currently depends on:

Short-term goals:

0.4.3-dev-0ea3ad5.0

10 months ago

0.4.3-dev-f2f2ac5.0

11 months ago

0.4.3-dev-34b85df.0

11 months ago

0.4.3-dev-ee18609.0

11 months ago

0.4.3-dev-decd4ff.0

10 months ago

0.4.3-dev-85bac81.0

11 months ago

0.4.3-dev-214eb2a.0

11 months ago

0.4.3-dev-93d7fac.0

10 months ago

0.4.3-dev-baa7c08.0

11 months ago

0.4.3-dev-d711f8f.0

11 months ago

0.5.0-u20.0

9 months ago

0.4.3-dev-987bcf1.0

11 months ago

0.4.3-dev-de9b2e7.0

10 months ago

0.4.3-dev-98f94b3.0

10 months ago

0.4.3-dev-d3817fa.0

10 months ago

0.4.3-dev-8981e24.0

10 months ago

0.4.3-dev-9825f6d.0

10 months ago

0.4.3-dev-37e30ec.0

12 months ago

0.4.3-dev-db6d589.0

10 months ago

0.4.3-dev-7a3969f.0

11 months ago

0.4.3-dev-7b3ac1e.0

10 months ago

0.4.3-dev-c101e37.0

10 months ago

0.4.3-dev-729fe8e.0

11 months ago

0.4.3-dev-7f8ede3.0

12 months ago

0.4.3-dev-4a9a6ad.0

12 months ago

0.4.3-dev-7efdf47.0

11 months ago

0.4.3-dev-d504b42.0

12 months ago

0.4.3-dev-7f4df76.0

12 months ago

0.4.3-dev-8a7c1b2.0

12 months ago

0.4.3-dev-77a85e2.0

10 months ago

0.4.3-dev-42dbac1.0

11 months ago

0.4.3-dev-9f21b9d.0

10 months ago

0.4.3-dev-618553b.0

12 months ago

0.4.3-dev-6fb05ae.0

10 months ago

0.4.3-dev-f5bf658.0

12 months ago

0.4.3-dev-785e426.0

12 months ago

0.4.3-dev-f0ccde6.0

12 months ago

0.4.3-dev-dda823c.0

10 months ago

0.4.3-dev-7186681.0

11 months ago

0.4.3-dev-0e6a9f4.0

10 months ago

0.4.3-dev-db4dcf4.0

10 months ago

0.4.3-dev-9423fce.0

11 months ago

0.4.3-dev-d2b661f.0

12 months ago

0.4.3-dev-33a5708.0

10 months ago

0.4.3-dev-f83e5a9.0

11 months ago

0.4.3-dev-42d5764.0

11 months ago

0.4.3-dev-545fc58.0

11 months ago

0.4.3-dev-4926a13.0

10 months ago

0.4.3-dev-75e8d38.0

10 months ago

0.4.3-dev-827ced0.0

10 months ago

0.4.3-dev-a7fc433.0

10 months ago

0.4.3-dev-1ea0d4b.0

11 months ago

0.4.3-dev-f28dd0d.0

10 months ago

0.4.3-dev-9dfa568.0

12 months ago

0.4.3-dev-9f48684.0

12 months ago

0.4.3-dev-6498ae1.0

12 months ago

0.4.3-dev-e5a1afd.0

10 months ago

0.4.3-dev-a67bf28.0

11 months ago

0.4.3-dev-7902326.0

11 months ago

0.4.3-dev-0303d15.0

11 months ago

0.4.3-dev-0e76960.0

11 months ago

0.4.3-dev-4a47b35.0

12 months ago

0.4.3-dev-f8d1b07.0

11 months ago

0.4.3-dev-237359b.0

10 months ago

0.4.3-dev-727699e.0

11 months ago

0.4.3-dev-f047c93.0

12 months ago

0.4.3-dev-3a87731.0

12 months ago

0.4.3-dev-8dee73d.0

10 months ago

0.4.3-dev-34632ea.0

10 months ago

0.4.3-dev-c605745.0

11 months ago

0.4.3-dev-0e80151.0

10 months ago

0.4.3-dev-7b582c1.0

11 months ago

0.4.3-dev-e6a21cf.0

10 months ago

0.4.3-dev-152d3cc.0

11 months ago

0.4.3-dev-3190128.0

10 months ago

0.4.3-dev-eb8538b.0

11 months ago

0.4.3-dev-6ef8304.0

11 months ago

0.4.3-dev-7332d8b.0

10 months ago

0.4.3-dev-c9e286a.0

11 months ago

0.4.3-dev-4e588de.0

11 months ago

0.4.3-u18.5

1 year ago

0.4.3-u18.4

1 year ago

0.4.3-u18.3

1 year ago

0.4.3-u18.2

1 year ago

0.4.3-u18.1

1 year ago

0.4.3-u18.0

1 year ago

0.4.3-dev-d1ef359.0

11 months ago

0.4.3-dev-b78165c.0

12 months ago

0.4.3-dev-3ccb42d.0

10 months ago

0.4.3-dev-eeb33f0.0

10 months ago

0.4.3-dev-fe64626.0

11 months ago

0.4.3-dev-6504dc6.0

11 months ago

0.4.3-dev-3d4f71f.0

12 months ago

0.4.3-dev-221a4b4.0

11 months ago

0.4.3-dev-79df2da.0

12 months ago

0.4.3-dev-2422c58.0

10 months ago

0.4.3-dev-2a71f04.0

11 months ago

0.4.3-dev-c39bfd3.0

11 months ago

0.4.3-dev-9f8732f.0

10 months ago

0.4.3-dev-7b1656c.0

12 months ago

0.4.3-dev-8fb6eaf.0

12 months ago

0.4.3-dev-b2b8029.0

10 months ago

0.4.3-dev-83c2ebd.0

12 months ago

0.4.3-dev-3cbd11f.0

10 months ago

0.4.3-dev-cb5ca69.0

11 months ago

0.4.3-dev-656aba8.0

12 months ago

0.4.3-dev-47a51f2.0

10 months ago

0.4.3-dev-9348280.0

11 months ago

0.4.3-dev-b8d96c7.0

12 months ago

0.4.3-dev-3825031.0

11 months ago

0.4.3-dev-d718eac.0

12 months ago

0.4.3-dev-35cb8ca.0

12 months ago

0.4.3-dev-dc77e16.0

11 months ago

0.4.3-dev-6627838.0

12 months ago

0.4.3-dev-b0669ee.0

11 months ago

0.4.3-dev-4b5dff2.0

10 months ago

0.4.3-dev-ebe7d88.0

10 months ago

0.4.3-dev-5fa1324.0

12 months ago

0.4.3-dev-f0367d7.0

10 months ago

0.4.3-dev-f0fb3c8.0

11 months ago

0.4.3-dev-9555ae0.0

12 months ago

0.4.3-dev-3d64bee.0

12 months ago

0.4.3-dev-1d8b7d2.0

12 months ago

0.4.3-dev-b1998a7.0

12 months ago

0.4.3-dev-1a00282.0

12 months ago

0.4.3-dev-c730d2b.0

11 months ago

0.4.3-dev-2f34a05.0

11 months ago

0.4.3-dev-078e9f8.0

12 months ago

0.4.3-dev-1af1596.0

11 months ago

0.4.3-dev-69f57d5.0

10 months ago

0.4.3-dev-47470c7.0

10 months ago

0.4.3-dev-08d306c.0

10 months ago

0.4.3-dev-8093cf6.0

12 months ago

0.4.3-dev-fd22e4a.0

12 months ago

0.4.3-dev-cb12196.0

12 months ago

0.4.3-dev-9db2909.0

11 months ago

0.4.3-dev-92714b3.0

11 months ago

0.4.3-dev-141be47.0

10 months ago

0.4.3-dev-fe66674.0

12 months ago

0.4.3-dev-09ccd43.0

10 months ago

0.4.3-dev-b962ad8.0

11 months ago

0.4.3-dev-ed9fee7.0

10 months ago

0.4.3-dev-19c6d7f.0

11 months ago

0.4.3-dev-8ef3fde.0

11 months ago

0.4.3-dev-b2cb709.0

12 months ago

0.4.3-dev-e393fda.0

11 months ago

0.4.3-dev-07cb543.0

11 months ago

0.4.3-dev-3d98aac.0

11 months ago

0.4.3-dev-c9a663b.0

12 months ago

0.4.3-dev-0123943.0

11 months ago

0.4.3-dev-0282f99.0

10 months ago

0.4.3-dev-b988686.0

10 months ago

0.4.3-dev-d461b05.0

12 months ago

0.4.3-dev-5fb1074.0

11 months ago

0.4.3-dev-2af926f.0

12 months ago

0.4.3-dev-74fc45b.0

12 months ago

0.4.3-dev-962e6c4.0

10 months ago

0.4.3-dev-5051754.0

10 months ago

0.4.3-dev-16940ff.0

12 months ago

0.4.3-dev-0ca4b57.0

11 months ago

0.4.3-dev-afbbd9a.0

10 months ago

0.4.3-dev-473abf9.0

12 months ago

0.4.3-dev-46061c3.0

11 months ago

0.4.3-dev-a27f724.0

11 months ago

0.4.3-dev-190221b.0

10 months ago

0.4.3-dev-acbb5da.0

11 months ago

0.4.3-dev-b6d5983.0

10 months ago

0.4.3-u18a.0

12 months ago

0.4.3-dev-fb6a3e0.0

11 months ago

0.4.3-dev-fd6c64a.0

10 months ago

0.4.3-dev-048a67c.0

12 months ago

0.4.3-dev-36f6b6e.0

11 months ago

0.4.3-dev-0a9d7f0.0

11 months ago

0.4.3-dev-252b405.0

11 months ago

0.4.3-dev-1cee3dd.0

10 months ago

0.4.3-dev-a035a67.0

10 months ago

0.4.3-u19.2

10 months ago

0.4.3-u19.1

11 months ago

0.4.3-u19.0

11 months ago

0.4.3-dev-4655b76.0

11 months ago

0.4.3-dev-b1e63c2.0

11 months ago

0.4.3-dev-bdbd5df.0

10 months ago

0.4.3-dev-129bb20.0

10 months ago

0.4.3-dev-f4feacb.0

10 months ago

0.4.3-u17.1

1 year ago

0.4.3-u17.0

1 year ago

0.4.3-u16.2

2 years ago

0.4.3-u16.1

2 years ago

0.4.3-u16.0

2 years ago

0.4.3-u13.0

2 years ago

0.4.3-u14.0

2 years ago

0.4.3-u12.0

2 years ago

0.4.3-u11wf.0

2 years ago

0.4.3-u11.0

2 years ago

0.4.2

3 years ago

0.4.1

3 years ago

0.4.0

3 years ago

0.3.4

3 years ago

0.3.2

3 years ago

0.3.3

3 years ago

0.3.0

3 years ago

0.3.1

3 years ago

0.2.0

3 years ago