-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #14 from agoric-labs/dc-chain
docs, local chain details
- Loading branch information
Showing
6 changed files
with
291 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
## Testing the contract | ||
|
||
The contract is on a branch in the agoric-sdk zoe package | ||
(see releases for up-to-date details). | ||
|
||
```console | ||
$ git clone -b dc-gimix-test1 https://github.com/Agoric/agoric-sdk | ||
$ cd agoric-sdk; yarn && yarn build | ||
$ cd packages/zoe | ||
``` | ||
|
||
Then run `test-gimix.js`; output should look something like... | ||
|
||
``` | ||
$ yarn test test/unitTests/contracts/gimix/test-gimix.js | ||
yarn run v1.22.19 | ||
$ ava --verbose test/unitTests/contracts/gimix/test-gimix.js | ||
... | ||
✔ execute work agreement (678ms) | ||
ℹ githubOracle starts | ||
ℹ alice starts | ||
ℹ bob starts | ||
ℹ oracle received invation { | ||
brand: Object @Alleged: Zoe Invitation brand {}, | ||
value: [ | ||
{ | ||
description: 'gimix oracle invitation', | ||
handle: Object @Alleged: InvitationHandle {}, | ||
installation: Object @Alleged: BundleInstallation {}, | ||
instance: Object @Alleged: InstanceHandle {}, | ||
}, | ||
], | ||
} | ||
ℹ alice offers to give { | ||
Acceptance: { | ||
brand: Object @Alleged: ZDEFAULT brand {}, | ||
value: 12000000n, | ||
}, | ||
} | ||
ℹ alice wants { | ||
Stamp: { | ||
brand: Object @Alleged: GimixOracle brand {}, | ||
value: Object @copyBag { | ||
payload: Array [ … ], | ||
}, | ||
}, | ||
} | ||
ℹ alice exit { | ||
afterDeadline: { | ||
deadline: { | ||
absValue: 1577880000021n, | ||
timerBrand: Object @Alleged: timerBrand {}, | ||
}, | ||
timer: Object @Alleged: ManualTimer { | ||
... | ||
}, | ||
}, | ||
} | ||
ℹ alice invitation Object @Alleged: Zoe Invitation payment {} | ||
ℹ oracle offer result { | ||
invitationMakers: Object @Alleged: JobsReportContinuing invitationMakers {}, | ||
kitMustHaveMultipleFacets: Object @Alleged: JobsReportContinuing kitMustHaveMultipleFacets {}, | ||
} | ||
ℹ alice offer result job id 0n | ||
ℹ alice assigns to bob and waits for news on https://github.com/alice/project1/issues/1 ... | ||
ℹ bob opens PR https://github.com/alice/project1/pull/2 | ||
ℹ alice merges https://github.com/alice/project1/pull/2 | ||
ℹ oracle evaluates delivery claim 0n { | ||
issue: { | ||
assignee: 'bob', | ||
num: 1, | ||
status: 'closed', | ||
type: 'issue', | ||
}, | ||
pull: { | ||
author: 'bob', | ||
fixes: 'https://github.com/alice/project1/issues/1', | ||
num: 2, | ||
status: 'merged', | ||
type: 'pull', | ||
}, | ||
} | ||
ℹ oralce makes JobReport { | ||
deliverDepositAddr: 'agoric1bob', | ||
issueURL: 'https://github.com/alice/project1/issues/1', | ||
jobID: 0n, | ||
} | ||
ℹ bob invitation balance { | ||
brand: Object @Alleged: Zoe Invitation brand {}, | ||
value: [ | ||
{ | ||
customDetails: Object { … }, | ||
description: 'gimix delivery', | ||
handle: Object @Alleged: InvitationHandle {}, | ||
installation: Object @Alleged: BundleInstallation {}, | ||
instance: Object @Alleged: InstanceHandle {}, | ||
}, | ||
], | ||
} | ||
ℹ bob accepts deliver invitation Object @Alleged: ZoeSeatKit userSeat {} undefined | ||
ℹ bob payout Acceptance { | ||
brand: Object @Alleged: ZDEFAULT brand {}, | ||
value: 12000000n, | ||
} | ||
ℹ alice payout Acceptance { | ||
brand: Object @Alleged: ZDEFAULT brand {}, | ||
value: 0n, | ||
} | ||
ℹ alice payout Stamp { | ||
brand: Object @Alleged: GimixOracle brand {}, | ||
value: Object @copyBag { | ||
payload: [ | ||
Array [ … ], | ||
], | ||
}, | ||
} | ||
ℹ done | ||
start-gimix gimix started! | ||
─ | ||
2 tests passed | ||
1 test todo | ||
Done in 1.37s. | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
CHAINID=agoriclocal | ||
USER1ADDR=$(shell agd keys show user1 -a --keyring-backend="test") | ||
ACCT_ADDR=$(USER1ADDR) | ||
BLD=000000ubld | ||
|
||
ATOM_DENOM=ibc/BA313C4A19DFBF943586C0387E6B11286F9E416B4DD27574E6909CABE0E342FA | ||
ATOM=000000$(ATOM_DENOM) | ||
|
||
.PHONY: list | ||
# https://stackoverflow.com/a/73159833/7963 | ||
list: | ||
@make -npq : 2> /dev/null | grep -v PHONY |\ | ||
awk -v RS= -F: '$$1 ~ /^[^#%]+$$/ { print $$1 }' | ||
|
||
balance-q: | ||
agd keys show user1 -a --keyring-backend="test" | ||
agd query bank balances $(ACCT_ADDR) | ||
|
||
GAS_ADJUSTMENT=1.2 | ||
SIGN_BROADCAST_OPTS=--keyring-backend=test --chain-id=$(CHAINID) \ | ||
--gas=auto --gas-adjustment=$(GAS_ADJUSTMENT) \ | ||
--yes -b block | ||
|
||
mint4k: | ||
make FUNDS=1000$(ATOM) fund-acct | ||
cd /usr/src/agoric-sdk && \ | ||
yarn --silent agops vaults open --wantMinted 4000 --giveCollateral 1000 >/tmp/want4k.json && \ | ||
yarn --silent agops perf satisfaction --executeOffer /tmp/want4k.json --from user1 --keyring-backend=test | ||
|
||
FUNDS=321$(BLD) | ||
fund-acct: | ||
agd tx bank send validator $(ACCT_ADDR) $(FUNDS) \ | ||
$(SIGN_BROADCAST_OPTS) \ | ||
-o json >,tx.json | ||
jq '{code: .code, height: .height}' ,tx.json | ||
|
||
gov-q: | ||
agd query gov proposals --output json | \ | ||
jq -c '.proposals[] | [.proposal_id,.voting_end_time,.status]' | ||
|
||
PROPOSAL=1 | ||
VOTE_OPTION=yes | ||
vote: | ||
agd tx gov vote $(PROPOSAL) $(VOTE_OPTION) --from=validator \ | ||
$(SIGN_BROADCAST_OPTS) \ | ||
-o json >,tx.json | ||
jq '{code: .code, height: .height}' ,tx.json | ||
|
||
instance-q: | ||
agd query vstorage data published.agoricNames.instance -o json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# Agoric Local Chain with docker-compose | ||
|
||
To start a local agoric blockchain: | ||
|
||
```sh | ||
docker-compose up -d | ||
``` | ||
|
||
Then use `docker-compose logs` etc. as usual. | ||
|
||
Some useful recipies are included in `Makefile`. | ||
Use `yarn make:help` to list them. | ||
For example: `yarn docker:make mint4k`. | ||
|
||
See also https://github.com/agoric-labs/dapp-game-places | ||
|
||
### Deploying the contract | ||
|
||
Get the bundle, script, and permit from a release. | ||
|
||
Use the [Agoric Gov Proposal Builder](https://cosgov.org/) | ||
for deployment: | ||
|
||
1. Use the [Install Bundle](https://cosgov.org/?msgType=installBundle&network=local) tab to install the bundle. | ||
It will likely say **insufficient balance**. | ||
To get enough IST: | ||
|
||
```sh | ||
yarn docker:make mint4k | ||
``` | ||
|
||
2. Get ready to vote. To query the status of proposals, use | ||
|
||
```sh | ||
yarn docker:make gov-q | ||
``` | ||
|
||
Then, don't execute this command, but get it ready: | ||
|
||
```sh | ||
yarn docker:make vote PROPOSAL=N | ||
``` | ||
|
||
2. Use the [CoreEval Proposal](https://cosgov.org/?msgType=coreEvalProposal&network=local) tab to make a proposal to | ||
start the contract using the permit and script. | ||
Note the **10 second voting period**, | ||
When you **Sign & Submit** the proposal, you can replace `N` | ||
above with the proposal number that pops up. | ||
|
||
To verify that the proposal executed correctly: | ||
|
||
```sh | ||
docker-compose logs | less -R | ||
``` | ||
|
||
The logs should include a few lines with no errors: | ||
|
||
``` | ||
agd_1 | 2023-11-17T03:12:36.882Z SwingSet: vat: v1: start-gimix timer board05674 | ||
... | ||
agd_1 | 2023-11-17T03:12:38.911Z SwingSet: vat: v1: start-gimix gimix started! | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,42 @@ | ||
# GiMiX | ||
# GiMiX - AMiX with GitHub (Prototype) | ||
|
||
GiMiX is an Agoric dapp to make a market for completing GitHub issues. | ||
|
||
1. Requestor proposes a bounty by choosing an issue and | ||
putting the bounty assets in escrow for a period of time. | ||
2. Responder negotiates an assignment to the issue, | ||
opens a PR for the work, and negotiates to close | ||
the issue with the PR. | ||
3. Responder signs a claim that a PR closes the issue | ||
while logged in with GitHub credentials. | ||
4. An oracle server verifies the responder's GitHub credentials | ||
and that the PR belongs to the responder and | ||
closes the issue. It then invites the responder to | ||
claim the bounty. | ||
5. The responder claims the bounty. | ||
6. The requestor receives a "stamp" NFT from the oracle, | ||
attesting to the completion of the issue. | ||
|
||
## Getting Started | ||
|
||
_TODO: explain credentials needed by the server._ | ||
|
||
```bash | ||
# start oracle server | ||
yarn dev:server | ||
|
||
# start web server (and, proxy to oracle server via /api) | ||
yarn dev:web | ||
``` | ||
|
||
[README-local-chain](./README-local-chain.md) has details | ||
about starting a testing environment and deploying the contract. | ||
|
||
## Background: AMIX: The American Information Exchange | ||
|
||
> The American Information Exchange (AMIX) was a platform for the buying and selling of information, goods and services as well as the exchange of information, ideas, and certain kinds of intellectual work product, created ... in the 1980s ... -- [Wikipedia](https://en.wikipedia.org/wiki/American_Information_Exchange) | ||
See also: | ||
|
||
- [What Agoric Learned from the American Information Exchange About Online Markets](https://agoric.com/blog/technology/what-agoric-learned-from-amix) | ||
- [AMIX: The American Information Exchange](http://erights.org/smart-contracts/history/index.html) on erights |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
version: '3.5' | ||
|
||
services: | ||
agd: | ||
# image should include proposals from the main agoric-3 chain | ||
# cf. https://github.com/Agoric/agoric-3-proposals | ||
image: ghcr.io/agoric/agoric-3-proposals:main | ||
# multi-arch is not yet available | ||
platform: linux/amd64 | ||
ports: | ||
# GRPC port (?) | ||
- 26656:26656 | ||
# RPC port | ||
- 26657:26657 | ||
# LCD/API port | ||
- 1317:1317 | ||
environment: | ||
# Include console.log() from vats in node logs | ||
DEBUG: "SwingSet:ls,SwingSet:vat" | ||
volumes: | ||
- .:/workspace | ||
entrypoint: /usr/src/upgrade-test-scripts/start_agd.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters