Skip to content

Commit

Permalink
Merge branch 'main' into 977-mint-tickets-ui
Browse files Browse the repository at this point in the history
  • Loading branch information
LuqiPan committed Apr 2, 2024
2 parents 1789cef + 5d800a0 commit 1464360
Show file tree
Hide file tree
Showing 67 changed files with 6,192 additions and 2,220 deletions.
55 changes: 48 additions & 7 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
name: Lint and Test
name: CI

on:
pull_request:

jobs:
all:
unit:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v3
- name: Use Node.js 18.8.x
uses: actions/setup-node@v3
uses: actions/checkout@v4
- name: Use Node.js 18
uses: actions/setup-node@v4
with:
# use node 18.8.x until Agoric/agoric-sdk#8636
node-version: '18.8.x'
node-version: "18"
- name: yarn install
run: yarn
- name: yarn lint
Expand All @@ -24,3 +23,45 @@ jobs:
run: yarn test
- name: yarn test:e2e
run: yarn test:e2e
integration:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Use Node.js 18
uses: actions/setup-node@v4
with:
node-version: "18"
- name: yarn install
run: yarn
- name: yarn start:docker
run: yarn start:docker
- name: yarn build
run: yarn build
# Borrowed from https://github.com/DCFoundation/cosmos-proposal-builder/blob/main/.github/workflows/pr.yml#L43-L61
- name: Wait for Docker container to be ready
run: |
timeout 300 bash -c '
TARGET_HEIGHT=1111
SLEEP=10
echo "Waiting for the Agoric service to be fully ready..."
echo "Target block height: $TARGET_HEIGHT"
while true; do
response=$(curl --silent http://localhost:26657/abci_info);
height=$(echo $response | jq -r ".result.response.last_block_height | tonumber");
if [ "$height" -ge $TARGET_HEIGHT ]; then
echo "Service is ready! Last block height: $height";
break;
else
echo "Waiting for last block height to reach $TARGET_HEIGHT. Current height: $height";
fi;
sleep $SLEEP;
done
'
- name: yarn start:contract
run: yarn start:contract
- name: verify contracts started onchain
run: |
curl http://localhost:1317/agoric/vstorage/data/published.agoricNames.instance | grep sellConcertTickets
curl http://localhost:1317/agoric/vstorage/data/published.agoricNames.instance | grep swaparoo
curl http://localhost:1317/agoric/vstorage/data/published.agoricNames.instance | grep postalService
2 changes: 1 addition & 1 deletion _agstate/agoric-servers/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "dapp-agoric-basics-agservers",
"name": "agoric-basics-agservers",
"version": "0.0.1",
"description": "Agoric server instances for dapp-agoric-basics",
"private": true,
Expand Down
4 changes: 2 additions & 2 deletions api/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$note": "@agoric/create-dapp@0.1.0 expects an api/package.json",
"name": "dapp-agoric-basics-api",
"name": "agoric-basics-api",
"version": "0.1.0"
}
}
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"
]
}
25 changes: 18 additions & 7 deletions contract/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,23 @@
"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",
"@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",
"@jessie.js/eslint-plugin": "^0.4.0",
Expand All @@ -45,9 +50,14 @@
"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/inter-protocol": "0.16.2-u14.1",
"@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 All @@ -73,6 +83,7 @@
"sourceType": "module",
"ecmaVersion": 2021
},
"ignorePatterns": "bundles/**.js",
"extends": [
"@agoric"
]
Expand Down
93 changes: 93 additions & 0 deletions contract/rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/**
* @file rollup configuration to bundle core-eval script
*
* Supports developing core-eval script, permit as a module:
* - 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 process from 'node:process';
import {
coreEvalGlobals,
moduleToScript,
configureBundleID,
emitPermit,
configureOptions,
} 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`,
coreScript = `bundles/deploy-${name}.js`,
coreScriptOptions = undefined,
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',
}),
]
: []),
...(coreScriptOptions
? [configureOptions({ options: coreScriptOptions })]
: []),
moduleToScript(),
emitPermit({ permit, file: permitFile }),
],
});

const { env } = process;

/** @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,
coreScriptOptions: {
swaparooCommittee: {
voterAddresses: env.SWAP_GOV_ADDR ? { v1: env.SWAP_GOV_ADDR } : {},
},
},
}),
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

0 comments on commit 1464360

Please sign in to comment.