@agoric/inter-protocol 0.13.2-dev-65d3f14.0 → 0.13.2-pismo-dev-12e97f1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/bundles/bundle-amm-meta.js +168 -188
  2. package/bundles/bundle-amm.js +1 -1
  3. package/bundles/bundle-feeDistributor-meta.js +92 -92
  4. package/bundles/bundle-feeDistributor.js +1 -1
  5. package/bundles/bundle-interchainPool-meta.js +174 -190
  6. package/bundles/bundle-interchainPool.js +1 -1
  7. package/bundles/bundle-liquidateIncrementally-meta.js +149 -109
  8. package/bundles/bundle-liquidateIncrementally.js +1 -1
  9. package/bundles/bundle-liquidateMinimum-meta.js +149 -109
  10. package/bundles/bundle-liquidateMinimum.js +1 -1
  11. package/bundles/bundle-psm-meta.js +148 -168
  12. package/bundles/bundle-psm.js +1 -1
  13. package/bundles/bundle-psmCharter-meta.js +418 -0
  14. package/bundles/bundle-psmCharter.js +1 -0
  15. package/bundles/bundle-reserve-meta.js +176 -192
  16. package/bundles/bundle-reserve.js +1 -1
  17. package/bundles/bundle-scaledPriceAuthority-meta.js +173 -133
  18. package/bundles/bundle-scaledPriceAuthority.js +1 -1
  19. package/bundles/bundle-stakeFactory-meta.js +186 -206
  20. package/bundles/bundle-stakeFactory.js +1 -1
  21. package/bundles/bundle-vaultFactory-meta.js +197 -217
  22. package/bundles/bundle-vaultFactory.js +1 -1
  23. package/package.json +23 -25
  24. package/scripts/add-collateral-core.js +3 -52
  25. package/scripts/add-initial-liquidity.js +1 -0
  26. package/scripts/build-bundles.js +1 -4
  27. package/scripts/deploy-contracts.js +1 -0
  28. package/scripts/init-core.js +9 -11
  29. package/scripts/invite-committee-core.js +1 -0
  30. package/scripts/manual-price-feed.js +1 -1
  31. package/scripts/price-feed-core.js +2 -2
  32. package/src/collect.js +2 -0
  33. package/src/collectFees.js +4 -3
  34. package/src/contractSupport.js +27 -13
  35. package/src/econCommitteeCharter.js +80 -110
  36. package/src/feeDistributor.js +8 -6
  37. package/src/interchainPool.js +8 -7
  38. package/src/interest-math.js +2 -0
  39. package/src/interest.js +10 -6
  40. package/src/makeTracer.js +0 -5
  41. package/src/my-lien.js +7 -3
  42. package/src/proposals/addAssetToVault.js +5 -3
  43. package/src/proposals/committee-proposal.js +42 -112
  44. package/src/proposals/core-proposal.js +30 -17
  45. package/src/proposals/demoIssuers.js +16 -17
  46. package/src/proposals/econ-behaviors.js +115 -156
  47. package/src/proposals/price-feed-proposal.js +6 -118
  48. package/src/proposals/sim-behaviors.js +1 -0
  49. package/src/proposals/startEconCommittee.js +2 -1
  50. package/src/proposals/startPSM.js +117 -77
  51. package/src/proposals/utils.js +12 -23
  52. package/src/psm/psm.js +55 -37
  53. package/src/psm/psmCharter.js +139 -0
  54. package/src/reserve/assetReserve.js +35 -28
  55. package/src/reserve/params.js +2 -0
  56. package/src/stakeFactory/attestation.js +9 -4
  57. package/src/stakeFactory/attestationTool.js +1 -0
  58. package/src/stakeFactory/params.js +1 -0
  59. package/src/stakeFactory/stakeFactory.js +1 -1
  60. package/src/stakeFactory/stakeFactoryKit.js +20 -13
  61. package/src/stakeFactory/stakeFactoryManager.js +3 -2
  62. package/src/vaultFactory/burn.js +1 -0
  63. package/src/vaultFactory/liquidateIncrementally.js +8 -5
  64. package/src/vaultFactory/liquidateMinimum.js +6 -2
  65. package/src/vaultFactory/liquidation.js +2 -2
  66. package/src/vaultFactory/orderedVaultStore.js +1 -0
  67. package/src/vaultFactory/params.js +12 -7
  68. package/src/vaultFactory/prioritizedVaults.js +1 -0
  69. package/src/vaultFactory/storeUtils.js +1 -0
  70. package/src/vaultFactory/types.js +2 -0
  71. package/src/vaultFactory/vault.js +40 -26
  72. package/src/vaultFactory/vaultDirector.js +18 -15
  73. package/src/vaultFactory/vaultFactory.js +20 -19
  74. package/src/vaultFactory/vaultHolder.js +3 -4
  75. package/src/vaultFactory/vaultKit.js +1 -0
  76. package/src/vaultFactory/vaultManager.js +10 -7
  77. package/src/vpool-xyk-amm/addLiquidity.js +4 -3
  78. package/src/vpool-xyk-amm/addPool.js +20 -23
  79. package/src/vpool-xyk-amm/constantProduct/calcFees.js +12 -6
  80. package/src/vpool-xyk-amm/constantProduct/calcSwapPrices.js +2 -0
  81. package/src/vpool-xyk-amm/constantProduct/core.js +24 -16
  82. package/src/vpool-xyk-amm/constantProduct/defaults.js +2 -0
  83. package/src/vpool-xyk-amm/constantProduct/getXY.js +6 -2
  84. package/src/vpool-xyk-amm/constantProduct/internal-types.js +14 -12
  85. package/src/vpool-xyk-amm/constantProduct/invariants.js +8 -4
  86. package/src/vpool-xyk-amm/constantProduct/swap.js +19 -17
  87. package/src/vpool-xyk-amm/constantProduct/types.js +2 -0
  88. package/src/vpool-xyk-amm/doublePool.js +14 -20
  89. package/src/vpool-xyk-amm/estimate.js +2 -0
  90. package/src/vpool-xyk-amm/multipoolMarketMaker.js +5 -3
  91. package/src/vpool-xyk-amm/params.js +2 -0
  92. package/src/vpool-xyk-amm/pool.js +14 -16
  93. package/src/vpool-xyk-amm/priceAuthority.js +3 -1
  94. package/src/vpool-xyk-amm/removeLiquidity.js +2 -0
  95. package/src/vpool-xyk-amm/singlePool.js +14 -29
  96. package/src/vpool-xyk-amm/swap.js +1 -0
  97. package/src/vpool-xyk-amm/types.js +12 -10
  98. package/bundles/bundle-econCommitteeCharter-meta.js +0 -418
  99. package/bundles/bundle-econCommitteeCharter.js +0 -1
  100. package/scripts/start-local-chain-boot.js +0 -96
  101. package/scripts/start-local-chain-config.json +0 -83
  102. package/scripts/start-local-chain.sh +0 -69
  103. package/src/psm/README.md +0 -71
@@ -1,96 +0,0 @@
1
- /** @file Boot script for demoing oracles. Builds upon boot-psm to be used in integration tests. */
2
-
3
- import { buildRootObject as buildPsmRootObject } from '@agoric/vats/src/core/boot-psm.js';
4
- import { CHAIN_BOOTSTRAP_MANIFEST } from '@agoric/vats/src/core/manifest.js';
5
- import * as utils from '@agoric/vats/src/core/utils.js';
6
- import { E, Far } from '@endo/far';
7
- import {
8
- PRICE_FEEDS_MANIFEST,
9
- startPriceFeeds,
10
- } from '../src/proposals/price-feed-proposal.js';
11
-
12
- /** @typedef {import('@agoric/inter-protocol/src/proposals/econ-behaviors.js').EconomyBootstrapSpace} EconomyBootstrapSpace */
13
-
14
- /** @param {BootstrapSpace & { devices: { vatAdmin: any }, vatPowers: { D: DProxy }, }} powers */
15
- const installPriceAggregatorContract = async ({
16
- vatPowers: { D },
17
- devices: { vatAdmin },
18
- consume: { zoe },
19
- installation: {
20
- produce: { priceAggregator },
21
- },
22
- }) => {
23
- // Copied from installBootContracts:
24
-
25
- // This really wants to be E(vatAdminSvc).getBundleIDByName, but it's
26
- // good enough to do D(vatAdmin).getBundleIDByName
27
- const bundleCap = D(vatAdmin).getNamedBundleCap('priceAggregator');
28
-
29
- const bundle = D(bundleCap).getBundle();
30
- // TODO (#4374) this should be E(zoe).installBundleID(bundleID);
31
- const installation = E(zoe).install(bundle);
32
- priceAggregator.resolve(installation);
33
- };
34
-
35
- /**
36
- * Build root object of the PSM-only bootstrap vat.
37
- *
38
- * @param {{
39
- * D: DProxy
40
- * logger?: (msg: string) => void
41
- * }} vatPowers
42
- * @param {{
43
- * economicCommitteeAddresses: Record<string, string>,
44
- * demoOracleAddresses?: string[],
45
- * anchorAssets: { denom: string, keyword?: string }[],
46
- * }} vatParameters
47
- */
48
- export const buildRootObject = (vatPowers, vatParameters) => {
49
- const psmRootObject = buildPsmRootObject(vatPowers, vatParameters);
50
-
51
- const { produce, consume, ...spaces } = psmRootObject.getPromiseSpace();
52
-
53
- const { demoOracleAddresses } = vatParameters;
54
-
55
- const runBootstrapParts = async (vats, devices) => {
56
- const allPowers = harden({
57
- vatPowers,
58
- vatParameters,
59
- vats,
60
- devices,
61
- produce,
62
- consume,
63
- ...spaces,
64
- });
65
- const manifest = {
66
- ...CHAIN_BOOTSTRAP_MANIFEST,
67
- ...PRICE_FEEDS_MANIFEST,
68
- };
69
- /** @param {string} name */
70
- const powersFor = name => {
71
- const permit = manifest[name];
72
- assert(permit, `missing permit for ${name}`);
73
- return utils.extractPowers(permit, allPowers);
74
- };
75
-
76
- console.log('awaiting startPriceFeeds');
77
- await Promise.all([
78
- psmRootObject.bootstrap(vats, devices),
79
- installPriceAggregatorContract(powersFor('installBootContracts')),
80
- startPriceFeeds(powersFor('startPriceFeeds'), {
81
- options: { demoOracleAddresses },
82
- }),
83
- ]);
84
- };
85
-
86
- return Far('bootstrap', {
87
- bootstrap: (vats, devices) => {
88
- return runBootstrapParts(vats, devices).catch(e => {
89
- console.error('BOOTSTRAP FAILED:', e);
90
- throw e;
91
- });
92
- },
93
- });
94
- };
95
-
96
- harden({ buildRootObject });
@@ -1,83 +0,0 @@
1
- {
2
- "bootstrap": "bootstrap",
3
- "defaultReapInterval": 1000,
4
- "snapshotInterval": 1000,
5
- "vats": {
6
- "bootstrap": {
7
- "sourceSpec": "@agoric/inter-protocol/scripts/start-local-chain-boot.js",
8
- "parameters": {
9
- "anchorAssets": [
10
- {
11
- "keyword": "USDC_axl",
12
- "proposedName": "USD Coin",
13
- "decimalPlaces": 6,
14
- "denom": "ibc/usdc1234"
15
- },
16
- {
17
- "keyword": "AUSD",
18
- "proposedName": "Anchor USD",
19
- "decimalPlaces": 6,
20
- "denom": "ibc/toyellie"
21
- }
22
- ],
23
- "economicCommitteeAddresses": {
24
- "voter": "agoric1ersatz"
25
- },
26
- "demoOracleAddresses": [
27
- "agoric1ersatz"
28
- ]
29
- },
30
- "creationOptions": {
31
- "critical": true
32
- }
33
- }
34
- },
35
- "bundles": {
36
- "walletFactory": {
37
- "sourceSpec": "@agoric/smart-wallet/src/walletFactory.js"
38
- },
39
- "provisionPool": {
40
- "sourceSpec": "@agoric/vats/src/provisionPool.js"
41
- },
42
- "committee": {
43
- "sourceSpec": "@agoric/governance/src/committee.js"
44
- },
45
- "contractGovernor": {
46
- "sourceSpec": "@agoric/governance/src/contractGovernor.js"
47
- },
48
- "binaryVoteCounter": {
49
- "sourceSpec": "@agoric/governance/src/binaryVoteCounter.js"
50
- },
51
- "psm": {
52
- "sourceSpec": "@agoric/inter-protocol/src/psm/psm.js"
53
- },
54
- "econCommitteeCharter": {
55
- "sourceSpec": "@agoric/inter-protocol/src/econCommitteeCharter.js"
56
- },
57
- "priceAggregator": {
58
- "sourceSpec": "@agoric/zoe/src/contracts/priceAggregator.js"
59
- },
60
- "bank": {
61
- "sourceSpec": "@agoric/vats/src/vat-bank.js"
62
- },
63
- "centralSupply": {
64
- "sourceSpec": "@agoric/vats/src/centralSupply.js"
65
- },
66
- "mintHolder": {
67
- "sourceSpec": "@agoric/vats/src/mintHolder.js"
68
- },
69
- "board": {
70
- "sourceSpec": "@agoric/vats/src/vat-board.js"
71
- },
72
- "chainStorage": {
73
- "sourceSpec": "@agoric/vats/src/vat-chainStorage.js"
74
- },
75
- "zcf": {
76
- "sourceSpec": "@agoric/zoe/contractFacet.js"
77
- },
78
- "zoe": {
79
- "sourceSpec": "@agoric/vats/src/vat-zoe.js"
80
- }
81
- },
82
- "defaultManagerType": "xs-worker"
83
- }
@@ -1,69 +0,0 @@
1
- #!/bin/bash
2
-
3
- # run an Archive node to keep all history https://docs.desmos.network/fullnode/overview/
4
- # (the Makefile passes this to agd start)
5
- export AGC_START_ARGS="--pruning=nothing"
6
-
7
- # TODO make cross-platform https://stackoverflow.com/questions/52670836/standard-log-locations-for-a-cross-platform-application
8
- mkdir -p ~/Library/Logs/Agoric
9
- CHAIN_LOG=~/Library/Logs/Agoric/local-chain.log
10
- touch "$CHAIN_LOG" || exit 1
11
- open -a /System/Applications/Utilities/Console.app $CHAIN_LOG
12
-
13
- # ugly way to get SDK path regardless of cwd
14
- SDK=$(readlink -f "$(dirname -- "$(readlink -f -- "$0")")/../../..")
15
-
16
- # Basically the psm config, plus priceAggregator and a different sourceSpec
17
- export CHAIN_BOOTSTRAP_VAT_CONFIG="$SDK/packages/inter-protocol/scripts/start-local-chain-config.json"
18
-
19
- WALLET=$1
20
-
21
- if [ -z "$WALLET" ]; then
22
- echo "USAGE: $0 wallet-key"
23
- echo "You can reference by name: agd keys list"
24
- exit 1
25
- fi
26
-
27
- WALLET_BECH32=$(agd keys show "$WALLET" --output json | jq -r .address)
28
-
29
- # xxx this would be more robust using `jq`
30
- # grant econ governance
31
- sed -i '' "s/\"voter\":.*/\"voter\": \"$WALLET_BECH32\"/" "$CHAIN_BOOTSTRAP_VAT_CONFIG"
32
- # grant same key the priviledge of operating the demo oracle
33
- # NB this assumes the current value, so won't update any others
34
- sed -i '' "s/agoric1ersatz/$WALLET_BECH32/" "$CHAIN_BOOTSTRAP_VAT_CONFIG"
35
-
36
- echo CHAIN_LOG $CHAIN_LOG
37
- echo SDK "$SDK"
38
- echo WALLET "$WALLET"
39
- echo WALLET_BECH32 "$WALLET_BECH32"
40
-
41
- cd "$SDK"/packages/cosmic-swingset || exit 1
42
-
43
- echo "Logs written to $CHAIN_LOG"
44
- # setup can be skipped if you know its up to date
45
- make scenario2-setup >>$CHAIN_LOG 2>&1
46
-
47
- # TODO detect it's already running, indicate when it started and offer to restart
48
- # e.g. killall node xsnap-worker
49
- echo "Starting the chain..."
50
- # disable pruning to keep all history https://docs.desmos.network/fullnode/overview/
51
- make AGC_START_ARGS="--pruning=nothing" scenario2-run-chain >>$CHAIN_LOG 2>&1 &
52
- make wait-for-cosmos
53
-
54
- echo "Funding the pool..."
55
- make fund-provision-pool
56
-
57
- echo "Funding your wallet account..."
58
- # After `fund-provision-pool` there is 900 IST remaining for other account funding.
59
- # A wallet can be tested with 20 BLD for provisioning wallet and 20 USDC for psm trading
60
- make ACCT_ADDR="$WALLET_BECH32" FUNDS=20000000ubld,20000000ibc/usdc1234 fund-acct
61
- agd query bank balances "$WALLET_BECH32" | grep ubld || exit 1
62
-
63
- echo "Provisioning your smart wallet..."
64
- agoric wallet provision --spend --account "$WALLET"
65
- echo "waiting for blocks"
66
- sleep 15
67
- # verify
68
- agoric wallet list
69
- agoric wallet show --from "$WALLET"
package/src/psm/README.md DELETED
@@ -1,71 +0,0 @@
1
- # Parity Stability Module
2
-
3
- The Parity Stability Module supports efficiently minting/burning a stable token
4
- at a specified fixed ratio to a reference stable token, which thereby acts as an
5
- anchor to provide additional stability. For flexible economic policies, the fee
6
- percentage for trading into and out of the stable token are specified
7
- separately.
8
-
9
-
10
- ## Usage
11
-
12
- See the [Smart Wallet integration test](/packages/smart-wallet/test/test-psm-integration.js) for how it's used.
13
-
14
- End users can make swap offers in the CLI or GUI.
15
-
16
- ### CLI
17
-
18
- See [psm.js command file](/packages/agoric-cli/src/commands/psm.js) and its [integration test script](/packages/agoric-cli/scripts/).
19
-
20
- ```mermaid
21
- sequenceDiagram
22
-
23
- actor user
24
-
25
- participant cli as Dapp PSM
26
- participant disk
27
- participant B as Cosmos / Swingset <br/> bridge
28
- participant C as smart-wallet<br/>contract
29
- participant PSM as PSM<br/>contract
30
-
31
- user ->> cli: create a swap offer
32
- user -->> disk: write offer data
33
- user ->> cli: sign and send swap offer
34
- disk -->> cli: read offer data
35
- cli ->> B: spending transaction
36
- B ->> C: unpack ocap data
37
- C ->> PSM: route offer
38
- ```
39
-
40
-
41
- ### GUI
42
-
43
- The GUI is in https://github.com/Agoric/dapp-psm
44
-
45
- It introduces another layer of communication (between the dapp and Wallet UI):
46
-
47
- ```mermaid
48
- sequenceDiagram
49
-
50
- actor user
51
-
52
- participant dapp as Dapp PSM
53
- participant ls as localStorage
54
- participant ui as Wallet UI
55
- participant Keplr
56
- participant B as Cosmos / Swingset <br/> bridge
57
- participant C as smart-wallet<br/>contract
58
- participant PSM as PSM<br/>contract
59
-
60
- user ->> dapp: configure offer and click
61
- dapp ->> ls: write offer record
62
- ls ->> ui: notify offer record
63
- ui ->> user: display offer for signing
64
- user ->> ui: click Approve
65
- ui ->> Keplr: request signing
66
- Keplr ->> user: pop-up transaction
67
- user ->> Keplr: click to sign
68
- Keplr ->> B: spending transaction
69
- B ->> C: unpack ocap data
70
- C ->> PSM: route offer
71
- ```