Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: deploy-contract tooling; e2e testing support #16

Merged
merged 90 commits into from
Mar 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
9325502
WIP: with a3p use-lo-bundle-cost, we don't need to lower it
dckc Mar 7, 2024
47f39cd
Revert "fixup! chore(start-postalSvc): match builder patterns"
dckc Mar 5, 2024
08fce36
chore(makeHttpClient) copy from @agoric/casting
dckc Feb 22, 2024
6154866
feat(makeHttpClient): makeAPI
dckc Feb 22, 2024
e2ce242
chore(batchQuery): copy vstorage utils from ag-power-tools
dckc Feb 22, 2024
8bdd13b
fix(batchQuery): keyToPath return
dckc Feb 29, 2024
cf2cf3a
chore(marshalTables): copy from ag-power-tools
dckc Feb 22, 2024
96518b1
feat(marshalTables): caller-supplied valToSlot in client marshal
dckc Feb 24, 2024
f43c86f
docs(marshalTables): note connection to @agoric/rpc
dckc Mar 5, 2024
84a5aa1
chore(makeQueryKit): copy from ag-trade
dckc Feb 22, 2024
f5085b1
feat(queryKit): follow
dckc Feb 22, 2024
89cbca3
chore(agd-lib): copy from agoric-3-proposals; .ts -> .js
dckc Feb 22, 2024
275a577
fix(agd-lib): detect tx errors; supply enough gas
dckc Feb 22, 2024
f6dce3e
feat(e2e-tools): installBundles, provisionSmartWallet w/clean logs
dckc Feb 22, 2024
cda7961
test(postalSvc): e2e
dckc Mar 5, 2024
7929ebc
docs(postal-service.proposal): note script builder
dckc Mar 5, 2024
50e774e
feat: bundle start-postalSvc
dckc Feb 22, 2024
3a5fbbf
WIP: xsnap resolution
dckc Mar 1, 2024
509ebf5
chore(e2e): move from test/ to tools/
dckc Mar 5, 2024
bd836c2
WIP(market-actors): update e2e
dckc Mar 5, 2024
488a6dd
WIP(test-postalSvc): update tools/
dckc Mar 5, 2024
d6f62c2
build(contract): bundle-source is a dependency (for deploy script)
dckc Mar 5, 2024
e90ef73
build(jsconfig): include tools
dckc Mar 5, 2024
41224b0
WIP(deploy-contract): read agoricNames.brand from local chain
dckc Mar 5, 2024
fe020d8
WIP(deploy-contract): CLI stuff
dckc Mar 5, 2024
1b547ff
WIP(boot-tools): update e2e
dckc Mar 5, 2024
ea21af1
feat(e2e): parameterize rpc, api addresses
dckc Mar 5, 2024
3eb57fe
WIP(deploy-contract): install bundle, preserving progress
dckc Mar 5, 2024
8381d82
WIP(contract/package): more rename postalSvc -> postal-service
dckc Mar 6, 2024
304a713
WIP(rollup.config): send -> postal-service
dckc Mar 6, 2024
fea0dce
WIP(deploy-contract): run core eval
dckc Mar 6, 2024
40227a0
WIP(deploy-contract): CLI option stuff
dckc Mar 6, 2024
928559a
chore(postal-svc): customTermsShape
dckc Mar 6, 2024
7f7bd9f
chore(@types/zcf): ContractMeta
dckc Mar 6, 2024
254bc44
refactor(start-contract): factor out of postal-service.proposal
dckc Mar 6, 2024
beb49b7
chore(postal-service.contract): export start fn type
dckc Mar 6, 2024
cb35008
WIP(postal-service.proposal): factor out start-contract
dckc Mar 6, 2024
4c1b5aa
test(test-postalSvc): test permit
dckc Mar 6, 2024
eb3a265
feat: narrow publishBrandInfo power
dckc Mar 6, 2024
b66a00c
chore(boot-tools): zone
dckc Mar 6, 2024
e2fd20d
refactor(sell-concert-tickets-proposal): use brandAuxPublisher
dckc Mar 6, 2024
1e6090c
style(test-sell): lint
dckc Mar 6, 2024
3aebc1b
refactor(test-sell): use mockBootstrapPowers, produceBoardAuxManager
dckc Mar 6, 2024
ee3edda
chore(sell-proposal): avoid bundling from other packages
dckc Mar 6, 2024
02dc48d
chore(rollup.config): both sell and pay contracts
dckc Mar 6, 2024
45d1154
chore(sell proposal): main
dckc Mar 6, 2024
bdbec11
feat(start-contract): publish issuers, brands
dckc Mar 6, 2024
73b7a18
refactor(sell proposal): delegate issuer publishing to the platform
dckc Mar 6, 2024
60730e0
chore(board-aux.core): rename; export main
dckc Mar 7, 2024
c91a125
chore(endo1.core): rename; export main
dckc Mar 7, 2024
0cbcb4c
WIP(rollup.config): rollup endo1, board-aux too
dckc Mar 7, 2024
54d1503
test(test-build-proposal): hex doubles size; use build:deployer
dckc Mar 7, 2024
e820ba3
WIP(build-contract-deployer): prune in favor of deploy-contract.js
dckc Mar 7, 2024
9e16cbc
WIP(deploy-contract): handle multiple evals, 0 contracts
dckc Mar 7, 2024
759e2d9
WIP(start-contract): rename board-aux.core
dckc Mar 7, 2024
f84108a
WIP(test-sell): rename endo1, board-aux.core
dckc Mar 7, 2024
206547e
build(contract): never mind build:postal-service-deployer
dckc Mar 7, 2024
928f656
WIP(contract/package): build-contract-deployer script is no more
dckc Mar 7, 2024
53182f1
chore(board-aux.core): no endo1, so no tofu
dckc Mar 7, 2024
05eed68
WIP(rollup.config): punt on endo1 / marshal
dckc Mar 7, 2024
17f6d97
chore(e2e): restore mint100
dckc Mar 7, 2024
ea81a5d
build(contract): upgrade @agoric deps to upgrade-14
dckc Mar 7, 2024
c28930e
build: match resolutions to agoric-upgrade-14
dckc Mar 7, 2024
8b0fe52
chore(sell-concert-tickets.proposal): follow .proposal.js pattern
dckc Mar 7, 2024
703dc40
chore(rollup.config): .proposal.js pattern for sell-concert-tickets
dckc Mar 7, 2024
f60d038
chore(test-sell): .proposal.js convention
dckc Mar 7, 2024
c2ed737
docs(sell-tickets.proposal)
dckc Mar 10, 2024
df116c4
test(test-sell): test permits
dckc Mar 8, 2024
8ae203a
docs(objectTools): describe functions
dckc Mar 8, 2024
e6d36d7
refactor(sell-tickets-proposal): move AmountMath.make
dckc Mar 9, 2024
3484e2b
fix(swaparoo.proposal): export permit
dckc Mar 9, 2024
00288fc
feat(rollup.config): include swaparoo
dckc Mar 9, 2024
99892d9
fix(postal-service.proposal): permit consume installation too
dckc Mar 10, 2024
bce098a
refactor(types): move NonNullChainStorage from test/ to src/
dckc Mar 7, 2024
d218449
feat(lib-agd): show agd tx commands
dckc Mar 10, 2024
3e66520
refactor(deploy-contract): NonNullish moved
dckc Mar 8, 2024
c39825f
refactor(boot-tools): NonNullChainStorage moved to src/
dckc Mar 8, 2024
6dfb66b
docs(endo1.core): punt core-types
dckc Mar 8, 2024
63b8d64
docs(board-aux.core): move refine type to callee; punt core-types
dckc Mar 8, 2024
43b28ba
chore(sell-concert-tickets-proposal): powers types
dckc Mar 8, 2024
7f8035c
feat(start-contract): sanitizePathSegment (for gov)
dckc Mar 9, 2024
b259b62
test(test-swap-wallet): test permit
dckc Mar 12, 2024
0551642
build: lock packages with agoric-upgrade-14 resolutions
dckc Mar 12, 2024
8b8b104
build: governance dep; @endo/init etc. for deploy-script
dckc Mar 7, 2024
86e91f1
chore: prune bash scripts obsoleted by deploy-contract.js
dckc Mar 12, 2024
5b6b4ea
build: ses vs cannot delete... WIP
dckc Mar 12, 2024
c9391c3
feat(Makefile): use deploy-contract script to start contracts
dckc Feb 29, 2024
5070508
build: make start-contract _outside_ the a3p container
dckc Mar 12, 2024
b543eb8
refactor(deploy-contract): use node's parseArgs
dckc Mar 13, 2024
22cbc22
docs: -goals, tools
dckc Mar 15, 2024
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
76 changes: 31 additions & 45 deletions contract/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,41 +27,6 @@ mint100:
yarn --silent agops vaults open --wantMinted 100 --giveCollateral 100 >/tmp/want-ist.json && \
yarn --silent agops perf satisfaction --executeOffer /tmp/want-ist.json --from user1 --keyring-backend=test

# https://agoric.explorers.guru/proposal/61
lower-bundle-cost: bundles/lower-bundle-cost.json ./scripts/voteLatestProposalAndWait.sh
agd tx gov submit-proposal param-change bundles/lower-bundle-cost.json \
$(SIGN_BROADCAST_OPTS) \
--from user1
./scripts/voteLatestProposalAndWait.sh
# agd query swingset params


bundles/swingset-params.json:
mkdir -p bundles/
agd query swingset params -o json >$@

.ONESHELL:
bundles/lower-bundle-cost.json: bundles/swingset-params.json
@read PARAMS < bundles/swingset-params.json; export PARAMS
node - <<- EOF >$@
const storageByte = '20000000';
const paramChange = {
title: 'Lower Bundle Cost to 0.02 IST/Kb (a la mainnet 61)',
description: '0.02 IST/Kb',
deposit: '10000000ubld',
changes: [{
subspace: 'swingset',
key: 'beans_per_unit',
value: '...',
}],
};
const params = JSON.parse(process.env.PARAMS);
const ix = params.beans_per_unit.findIndex(({key}) => key === 'storageByte');
params.beans_per_unit[ix].beans = storageByte;
paramChange.changes[0].value = params.beans_per_unit;
console.log(JSON.stringify(paramChange, null, 2));
EOF

# Keep mint4k around a while for compatibility
mint4k:
make FUNDS=1000$(ATOM) fund-acct
Expand Down Expand Up @@ -103,19 +68,40 @@ print-key: /root/.agoric/user1.key
@agd keys show user1 -a --keyring-backend="test"
@echo

SCRIPT=start-sell-concert-tickets.js
PERMIT=start-sell-concert-tickets-permit.json
start-contract: $(SCRIPT) $(PERMIT) install-bundles
scripts/propose-start-contract.sh
start-contract: start-contract-mint start-contract-swap start-contract-pay

start-contract-mint:
yarn node scripts/deploy-contract.js \
--install src/sell-concert-tickets.contract.js \
--eval src/platform-goals/board-aux.core.js \
--eval src/sell-concert-tickets.proposal.js

start-contract-swap:
yarn node scripts/deploy-contract.js \
--install src/swaparoo.contract.js \
--eval src/swaparoo.proposal.js

start-contract-pay:
yarn node scripts/deploy-contract.js \
--install src/postal-service.contract.js \
--eval src/postal-service.proposal.js

install-bundles: bundles/bundle-list
./scripts/install-bundles.sh
# bundle-X.json.installed show that bundle-X.json was installed
# see also e2e-tools.js
%.json.installed: %.json
@echo '{"up-to-date": false}'

build-proposal: bundles/bundle-list
# X.js.done shows that X.js core eval ran
%.js.done: %.js
@echo '{"up-to-date": false}'

bundles/bundle-list $(SCRIPT) $(PERMIT):
./scripts/build-proposal.sh
# Dependencies to re-run core eval when source changes
# NOTE: manually updated
bundles/deploy-send.js: src/start-postalSvc.js
@echo '{"up-to-date": false}'

bundles/deploy-swaparoo.js: src/swaparoo.proposal.js
@echo '{"up-to-date": false}'

clean:
@rm -rf $(SCRIPT) $(PERMIT) bundles/
@rm -rf bundles/
8 changes: 7 additions & 1 deletion contract/jsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,11 @@
"strictNullChecks": true,
"moduleResolution": "node"
},
"include": ["src/**/*.js", "test/**/*.js", "exported.js", "globals.d.ts"]
"include": [
"src/**/*.js",
"test/**/*.js",
"tools/**/*.js",
"exported.js",
"globals.d.ts"
]
}
24 changes: 14 additions & 10 deletions contract/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,22 @@
"docker:bash": "docker compose exec agd bash",
"docker:make": "docker compose exec agd make -C /workspace/contract",
"make:help": "make list",
"start": "yarn docker:make clean start-contract print-key",
"build": "agoric run scripts/build-contract-deployer.js",
"start": "make clean start-contract; yarn docker:make print-key",
"build": "yarn build:deployer",
"build:deployer": "rollup -c rollup.config.mjs",
"test": "ava --verbose",
"lint": "eslint '**/*.js'",
"lint:types": "tsc -p jsconfig.json",
"lint:fix": "eslint --fix '**/*.js'"
},
"devDependencies": {
"@agoric/deploy-script-support": "^0.10.4-u12.0",
"@agoric/deploy-script-support": "^0.10.4-u14.0",
"@agoric/eslint-config": "dev",
"@agoric/smart-wallet": "0.5.3",
"@agoric/vats": "0.15.2-u12.0",
"@agoric/xsnap": "0.14.3-u12.0",
"@endo/bundle-source": "^2.8.0",
"@agoric/smart-wallet": "0.5.4-u14.0",
"@agoric/store": "0.9.3-u14.0",
"@agoric/xsnap": "0.14.3-u14.0",
"@agoric/zone": "0.2.3-u14.0",
"@endo/eslint-plugin": "^0.5.2",
"@endo/init": "^0.5.60",
"@endo/nat": "^4.1.27",
"@endo/promise-kit": "0.2.56",
"@endo/ses-ava": "^0.2.44",
Expand All @@ -50,9 +50,13 @@
"typescript": "~5.2.2"
},
"dependencies": {
"@agoric/ertp": "^0.16.3-u12.0",
"@agoric/zoe": "^0.26.3-u12.0",
"@agoric/ertp": "^0.16.3-u14.0",
"@agoric/governance": "^0.10.4-u14.0",
"@agoric/vats": "0.15.2-u14.0",
"@agoric/zoe": "^0.26.3-u14.0",
"@endo/bundle-source": "^2.8.0",
"@endo/far": "^0.2.22",
"@endo/init": "^0.5.60",
"@endo/marshal": "^0.8.9",
"@endo/patterns": "^0.2.5"
},
Expand Down
77 changes: 77 additions & 0 deletions contract/rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/**
* @file rollup configuration to bundle core-eval script
*
* Supports developing core-eval script, permit as a module:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thx for docs

* - import { E } from '@endo/far'
* We can strip this declaration during bundling
* since the core-eval scope includes exports of @endo/far
* - `bundleID = ...` is replaced using updated/cached bundle hash
* - `main` export is appended as script completion value
* - `permit` export is emitted as JSON
*/
// @ts-check
import {
coreEvalGlobals,
moduleToScript,
configureBundleID,
emitPermit,
} from './tools/rollup-plugin-core-eval.js';
import { permit as postalServicePermit } from './src/postal-service.proposal.js';
import { permit as swapPermit } from './src/swaparoo.proposal.js';
import { permit as sellPermit } from './src/sell-concert-tickets.proposal.js';
import { permit as boardAuxPermit } from './src/platform-goals/board-aux.core.js';

/**
* @param {*} opts
* @returns {import('rollup').RollupOptions}
*/
const config1 = ({
name,
coreEntry = `./src/${name}.proposal.js`,
contractEntry = `./src/${name}.contract.js`,
Comment on lines +30 to +31
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😍 module type suffixes

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer .core.js to .proposal.js but didn't manage to take on the churn.

Or maybe it should be .deploy.js?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like "deploy" as it's a deployment script, yeah?

coreScript = `bundles/deploy-${name}.js`,
permitFile = `deploy-${name}-permit.json`,
permit,
}) => ({
input: coreEntry,
output: {
globals: coreEvalGlobals,
file: coreScript,
format: 'es',
footer: 'main',
},
external: ['@endo/far'],
plugins: [
...(contractEntry
? [
configureBundleID({
name,
rootModule: contractEntry,
cache: 'bundles',
}),
]
: []),
moduleToScript(),
emitPermit({ permit, file: permitFile }),
],
});

/** @type {import('rollup').RollupOptions[]} */
const config = [
config1({
name: 'board-aux',
permit: boardAuxPermit,
coreEntry: `./src/platform-goals/board-aux.core.js`,
contractEntry: null,
}),
config1({
name: 'sell-concert-tickets',
permit: sellPermit,
}),
config1({ name: 'swaparoo', permit: swapPermit }),
config1({
name: 'postal-service',
permit: postalServicePermit,
}),
];
export default config;
45 changes: 0 additions & 45 deletions contract/scripts/build-contract-deployer.js

This file was deleted.

11 changes: 0 additions & 11 deletions contract/scripts/build-proposal.sh

This file was deleted.

Loading
Loading