Engineering Updates

  • 02 August 2021
    Zoe, ERTP
    • We added an attestation contract to packages/zoe https://github.com/Agoric/agoric-sdk/pull/3475. Attestations allow users to rely on a third-party claim that underlying assets have been escrowed, even if those assets are not on-chain ERTP tokens.
    • For instance, imagine that an art seller wants to represent their physical art as non-fungible tokens on a blockchain. The art seller wants users to be able to buy and sell the art, even without exchanging the physical art itself. The art seller can now create attestations that they have physically escrowed certain pieces of art. The value of these attestations depends entirely on the extent to which users believe the art seller has escrowed the physical art and will continue to do so.
    • Attestations are way of bringing off-chain assets on-chain via an authority claiming that the connection between the off-chain assets and the on-chain assets is trustworthy. Because attestations are non-fungible ERTP tokens, they can be used in any contract that accepts them, the same as any other ERTP token.
    • The particular attestation contract merged in PR 3475 produces ERTP tokens representing bonded staking tokens at the Cosmos level. Rather than an off-chain entity, Cosmos-level code is the authority of whether the underlying assets are escrowed, i.e. whether Cosmos-level staking tokens for a particular address have been bonded. The attestation contract is made of two reusable components for producing two different kinds of attestations, one which expires (https://github.com/Agoric/agoric-sdk/blob/master/packages/zoe/src/contracts/attestation/expiring/expiringNFT.js) and other which has to be returned to unlock the underlying token (https://github.com/Agoric/agoric-sdk/blob/master/packages/zoe/src/contracts/attestation/returnable/returnableNFT.js).
    • If you'd like to start using the attestation components in your own contract, feel free to reach out in the smart-contracts channel on Agoric Discord!
  • 26 July 2021
    SES, Endo
  • 19 July 2021
    SES, Zoe
    • Deep analysis of testnet data to characterize performance within and across validators during the stress test.
    • Continued progress on end-to-end implementation of Javascript level governance for the Agoric Treasury.
    • The groundwork laid for communication of staking status between Cosmos and Javascript layers to enable both governance and a yet-to-be-announced core economy function.
    • Developing metering implementation at both the kernel and Zoe levels.
    • Progress in building out browser-based wallet functionality.
    • The Realms proposal (part of SES) made it to stage 3 at tc39, the JavaScript standards committee. This means it will almost certainly become part of standard JavaScript.
  • 12 July 2021
    SES
    • A security review over SES has concluded with external auditor Least Authority.
    • The SES team and the MetaMask team have spent the whole week conducting an adversarial review of SES.
    • We completed the testnet's load testing phase, which produced some interesting data that we are using to improve our VM implementation.  There's still a lot of analysis to go!
  • 07 July 2021
    Swingset, Moddable
    • The SwingSet "comms" layer now implements full garbage collection, allowing cross-machine (e.g. solo-to-chain) references to be dropped and retired.
    • Restarting nodes from snapshots landed: we have measured speedups of up to 260x (23min to 6sec) in the Moddable XS JavaScript engine.
    • We've been working on the user experience of paying to use Zoe contracts and compensating the creator of the contract instance for the costs of execution.
  • 21 June 2021
    SES
    • Cross-vat garbage collection was added to the SwingSet kernel, enabling unreferenced objects to be dropped from their exporting vat and retired from the kernel data structures, saving memory and disk space.
    • SES 0.13.4 now contains a TypeScript definition covering lockdown, harden, Compartment, and assert, suitable both for TypeScript dependees and JSDoc type annotations https://github.com/endojs/endo/blob/master/packages/ses/NEWS.md#0134-2021-06-19
  • 08 June 2021
    Zoe
    • We're in the process of upgrading to Cosmos SDK 0.43.
    • BREAKING CHANGE: We are in the process of landing a major breaking API change to the Zoe Contract Facet (ZCF). Previously, in order for contract code to transfer escrowed assets from one seat (a seat is an active position in a contract) to another (for instance, in a swap between the two users), the contract code would have to manually calculate the new allocation for each seat, create a seatStaging  with the new allocation, and then reallocate over the seatStagings. This was complex enough that we had a helper, trade, that would do most of the work.
    • The new API is a major simplification of this process. Now, the contract code calls zcfSeat.incrementBy or zcfSeat.decrementBy, with the amounts to be subtracted or added to each seat. Then, the contract code calls zcf.reallocate with the seats as arguments. If offer safety and rights conservation hold, the new allocations are committed and the reallocation completes. This simplification makes the contract code much shorter and more readable. (For instance, it is easy to read the code and see that rights are conserved.) The simplification also allowed us to delete the trade helper.
  • 02 June 2021
    ERTP
  • 17 May 2021
    SES
    • We’ve improved the integrity of SES by replacing the role of Rollup in its toolchain with a solution based on SES itself. https://github.com/endojs/endo/issues/175
    • We made a number of breaking changes to Zoe and ERTP: https://github.com/Agoric/agoric-sdk/pull/2986. AmountMathKind and mathKind have been renamed to assetKind, and assetKind has been added to the displayInfo of a brand for easy rendering in UI. We also removed the deprecated zcfSeat.kickOut method, moved fakeVatAdmin to the tools directory, and removed the deprecated makePercent method.
  • 10 May 2021
    Xsnap
    • We upgraded the Agoric chain software (“cosmic-swingset”) to use the “xsnap” worker for each contract vat, which is based on the XS JavaScript engine, rather than Node.js. This improves contract launch and overall chain startup times by an order of magnitude, and enables future enhancements like heap snapshots, which promise to speed things up even further.
    • We’ve developed support for hosting JS and CommonJS modules together in SES, and can now create Zip files with precompiled versions of both.
    • Phase 3 of the incentivized testnet is underway.
  • 10 May 2021
    Xsnap
    • We upgraded the Agoric chain software ("cosmic-swingset") to use the "xsnap" worker for each contract vat, which is based on the XS JavaScript engine, rather than Node.js. This improves contract launch and overall chain startup times by an order of magnitude, and enables future enhancements like heap snapshots, which promise to speed things up even further.
    • We’ve developed support for hosting JS and CommonJS modules together in SES, and can now create Zip files with precompiled versions of both.