Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d0abe9027 | |||
| 4fb8f1dc86 | |||
| 27e5190e29 |
20
README.md
20
README.md
@@ -174,6 +174,26 @@ Runs `npm install` for each app and publishes a new version.
|
||||
or
|
||||
$ npm run deploy:apps
|
||||
|
||||
## Deployment
|
||||
|
||||
### Apps deployment
|
||||
|
||||
To deploy a new app version run:
|
||||
|
||||
$ aragon apm publish major --environment=NETWORK_TO_DEPLOY
|
||||
|
||||
### KreditsKit
|
||||
|
||||
deploy the KreditsKit as Kit to create new DAOs
|
||||
|
||||
$ truffle exec scripts/deploy-kit.js --network=NETWORK_TO_DEPLOY
|
||||
|
||||
### Creating a new DAO
|
||||
|
||||
make sure all apps and the KreditsKit are deployed, then create a new DAO:
|
||||
|
||||
$ truffle exec scripts/new-dao.js --network=NETWORK_TO_DEPLOY
|
||||
|
||||
## ACL / Permissions
|
||||
|
||||
## Upgradeable contracts
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Contribution deployments
|
||||
|
||||
## 2019-04-10 - Weltempfänger release
|
||||
|
||||
✔ Successfully published kredits-contribution.open.aragonpm.eth v5.0.0:
|
||||
ℹ Contract address: 0xe0f7dB486321b917e3A986Bdb2F2b9d51BA98fa9
|
||||
ℹ Content (ipfs): QmU3XEBb4f5jU8MFFEpwaa95C1mhc82UeYLRWLrKsvcQNw
|
||||
ℹ Transaction hash: 0xd736ff5f79f8142be3fad1a50580fb40aa468838da397f8630285fd91a445af3
|
||||
|
||||
|
||||
## 2019-04-04
|
||||
|
||||
✔ Successfully published kredits-contribution.open.aragonpm.eth v4.0.0:
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Contributor deployments
|
||||
|
||||
## 2019-04-10 - Weltempfänger release
|
||||
|
||||
✔ Successfully published kredits-contributor.open.aragonpm.eth v4.0.0:
|
||||
ℹ Contract address: 0x08a6D4D915FCAA5524F05F5F715a6C17cB6eeA6B
|
||||
ℹ Content (ipfs): QmR62PWwe1EzommfkhJDYcTvHoZjbXuv9dTG6vCn5dWCsb
|
||||
ℹ Transaction hash: 0xd5317c9e207a413485c55ec3046b09d467d978443680304737a6d7d3db0c90e1
|
||||
|
||||
|
||||
## 2019-04-04
|
||||
|
||||
✔ Successfully published kredits-contributor.open.aragonpm.eth v3.0.0:
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
# Kredits deployment
|
||||
|
||||
## 2019-04-10 - Weltempfänger release
|
||||
|
||||
Using KreditsKit at: 0x76e069b47b79442657eaf0555a32c6b16fa1b8b4
|
||||
Created new DAO at: 0xc34edf7d11b7f8433d597f0bb0697acdff55ef14
|
||||
|
||||
## 2019-04-04
|
||||
|
||||
Using KreditsKit at: 0x76e069b47b79442657eaf0555a32c6b16fa1b8b4
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Proposal deployments
|
||||
|
||||
## 2019-04-10 - Weltempfänger release
|
||||
|
||||
✔ Successfully published kredits-proposal.open.aragonpm.eth v5.0.0:
|
||||
ℹ Contract address: 0x4ce5b0286483c66b861e5599a199054687434552
|
||||
ℹ Content (ipfs): QmNYXEcmvKTGxYiob7WUf85oZhdmFDCuGiA6TsRrDE9TYb
|
||||
ℹ Transaction hash: 0x0482b58a1ba87d494c6391026399d0ac41b45384330d916f3f99ba70e501584b
|
||||
|
||||
|
||||
## 2019-04-04
|
||||
|
||||
✔ Successfully published kredits-proposal.open.aragonpm.eth v4.0.0:
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Token deployments
|
||||
|
||||
## 2019-04-10 - Weltempfänger release
|
||||
|
||||
✔ Successfully published kredits-token.open.aragonpm.eth v4.0.0:
|
||||
ℹ Contract address: 0x05E0C2bbdA8e5BeE22AC1E20C1457dA4de63aE26
|
||||
ℹ Content (ipfs): QmUuYLRMRNZcundUk2pxVaSjMNvtB7hzdf3eyoaUNqDPow
|
||||
ℹ Transaction hash: 0x98c28b5ca645904d56eb83c4783682f018c0fcee015b3a3d5fa8bd609223fb89
|
||||
|
||||
|
||||
## 2019-04-04
|
||||
|
||||
✔ Successfully published kredits-token.open.aragonpm.eth v3.0.0:
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
{
|
||||
"4": "0x76e069b47b79442657eaf0555a32c6b16fa1b8b4",
|
||||
"41787949": "0xa35aacdfccac54d3d96e0d29050c773b251c2c83"
|
||||
"4": "0x76e069b47b79442657eaf0555a32c6b16fa1b8b4"
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
{
|
||||
"4": "0xcd75458fbc4aa2231252d5b21f1391fd031e5cb2",
|
||||
"41787949": "0x183af3950364390a266edff2a0e7c4c2f95c0691"
|
||||
"4": "0xc34edf7d11b7f8433d597f0bb0697acdff55ef14"
|
||||
}
|
||||
@@ -1,20 +1,5 @@
|
||||
const ethers = require('ethers');
|
||||
|
||||
const schemas = require('kosmos-schemas');
|
||||
const tv4 = require('tv4');
|
||||
const validator = tv4.freshApi();
|
||||
|
||||
validator.addFormat({
|
||||
'date': function(value) {
|
||||
const dateRegexp = /^[0-9]{4,}-[0-9]{2}-[0-9]{2}$/;
|
||||
return dateRegexp.test(value) ? null : "A valid ISO 8601 full-date string is expected";
|
||||
},
|
||||
'time': function(value) {
|
||||
const timeRegexp = /^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|([\+|\-]([01][0-9]|2[0-3]):[0-5][0-9]))$/;
|
||||
return timeRegexp.test(value) ? null : "A valid ISO 8601 full-time string is expected";
|
||||
}
|
||||
})
|
||||
|
||||
const ContributionSerializer = require('../serializers/contribution');
|
||||
const Base = require('./base');
|
||||
|
||||
@@ -63,15 +48,12 @@ class Contribution extends Base {
|
||||
}
|
||||
|
||||
addContribution(contributionAttr, callOptions = {}) {
|
||||
let jsonStr = ContributionSerializer.serialize(contributionAttr);
|
||||
|
||||
// Validate JSON document against schema
|
||||
let result = validator.validate(JSON.parse(jsonStr), schemas['contribution']);
|
||||
if (!result) { return Promise.reject(validator.error); }
|
||||
let json = ContributionSerializer.serialize(contributionAttr);
|
||||
// TODO: validate against schema
|
||||
|
||||
return this.ipfs
|
||||
.add(jsonStr)
|
||||
.then(ipfsHashAttr => {
|
||||
.add(json)
|
||||
.then((ipfsHashAttr) => {
|
||||
let contribution = [
|
||||
contributionAttr.amount,
|
||||
contributionAttr.contributorId,
|
||||
|
||||
@@ -14,8 +14,6 @@ class Contribution {
|
||||
*/
|
||||
static deserialize(serialized) {
|
||||
let {
|
||||
date,
|
||||
time,
|
||||
kind,
|
||||
description,
|
||||
details,
|
||||
@@ -23,8 +21,6 @@ class Contribution {
|
||||
} = JSON.parse(serialized.toString('utf8'));
|
||||
|
||||
return {
|
||||
date,
|
||||
time,
|
||||
kind,
|
||||
description,
|
||||
details,
|
||||
@@ -42,8 +38,6 @@ class Contribution {
|
||||
static serialize(deserialized) {
|
||||
let {
|
||||
contributorIpfsHash,
|
||||
date,
|
||||
time,
|
||||
kind,
|
||||
description,
|
||||
url,
|
||||
@@ -56,8 +50,6 @@ class Contribution {
|
||||
"contributor": {
|
||||
"ipfs": contributorIpfsHash
|
||||
},
|
||||
date,
|
||||
time,
|
||||
kind,
|
||||
description,
|
||||
"details": details || {}
|
||||
|
||||
144
package-lock.json
generated
144
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "kredits-contracts",
|
||||
"version": "5.0.0",
|
||||
"version": "4.0.2",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -833,12 +833,14 @@
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||
"dev": true
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
||||
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
|
||||
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
|
||||
"dev": true
|
||||
},
|
||||
"any-observable": {
|
||||
"version": "0.2.0",
|
||||
@@ -949,6 +951,7 @@
|
||||
"version": "6.26.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
|
||||
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^1.1.3",
|
||||
"esutils": "^2.0.2",
|
||||
@@ -959,6 +962,7 @@
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^2.2.1",
|
||||
"escape-string-regexp": "^1.0.2",
|
||||
@@ -973,6 +977,7 @@
|
||||
"version": "6.26.3",
|
||||
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
|
||||
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-code-frame": "^6.26.0",
|
||||
"babel-generator": "^6.26.0",
|
||||
@@ -999,6 +1004,7 @@
|
||||
"version": "6.26.1",
|
||||
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
|
||||
"integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-messages": "^6.23.0",
|
||||
"babel-runtime": "^6.26.0",
|
||||
@@ -1013,7 +1019,8 @@
|
||||
"jsesc": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
|
||||
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
|
||||
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1148,6 +1155,7 @@
|
||||
"version": "6.24.1",
|
||||
"resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
|
||||
"integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-runtime": "^6.22.0",
|
||||
"babel-template": "^6.24.1"
|
||||
@@ -1157,6 +1165,7 @@
|
||||
"version": "6.23.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
|
||||
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-runtime": "^6.22.0"
|
||||
}
|
||||
@@ -1170,23 +1179,6 @@
|
||||
"babel-runtime": "^6.22.0"
|
||||
}
|
||||
},
|
||||
"babel-plugin-static-fs": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-static-fs/-/babel-plugin-static-fs-1.2.0.tgz",
|
||||
"integrity": "sha512-7zsDPvDzCBwfbU53WKym5LxTe1PxQHE/dGo+EfIELlBcn08TpU7SlPJILcc6YVAyTrpVUNioQfWiUyMWk1DJVg==",
|
||||
"requires": {
|
||||
"babel-template": "^6.3.13",
|
||||
"babel-types": "^6.4.1",
|
||||
"events": "^1.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"events": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
|
||||
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"babel-plugin-syntax-async-functions": {
|
||||
"version": "6.13.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
|
||||
@@ -1522,6 +1514,7 @@
|
||||
"version": "6.26.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
|
||||
"integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-runtime": "^6.26.0",
|
||||
@@ -1536,6 +1529,7 @@
|
||||
"version": "0.4.18",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
|
||||
"integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"source-map": "^0.5.6"
|
||||
}
|
||||
@@ -1546,6 +1540,7 @@
|
||||
"version": "6.26.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
||||
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-js": "^2.4.0",
|
||||
"regenerator-runtime": "^0.11.0"
|
||||
@@ -1555,6 +1550,7 @@
|
||||
"version": "6.26.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
|
||||
"integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-runtime": "^6.26.0",
|
||||
"babel-traverse": "^6.26.0",
|
||||
@@ -1567,6 +1563,7 @@
|
||||
"version": "6.26.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
|
||||
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-code-frame": "^6.26.0",
|
||||
"babel-messages": "^6.23.0",
|
||||
@@ -1583,6 +1580,7 @@
|
||||
"version": "6.26.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
|
||||
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-runtime": "^6.26.0",
|
||||
"esutils": "^2.0.2",
|
||||
@@ -1611,7 +1609,8 @@
|
||||
"babylon": {
|
||||
"version": "6.18.0",
|
||||
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
|
||||
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
|
||||
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
|
||||
"dev": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
@@ -1803,16 +1802,6 @@
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"brfs-babel": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/brfs-babel/-/brfs-babel-1.0.0.tgz",
|
||||
"integrity": "sha1-Zy32AGfQKSEMSTKNeLOXnVe1Cxg=",
|
||||
"requires": {
|
||||
"babel-core": "^6.4.0",
|
||||
"babel-plugin-static-fs": "^1.1.0",
|
||||
"through2": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"brorand": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
|
||||
@@ -2298,6 +2287,7 @@
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
|
||||
"integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.1"
|
||||
}
|
||||
@@ -2323,12 +2313,14 @@
|
||||
"core-js": {
|
||||
"version": "2.6.5",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz",
|
||||
"integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A=="
|
||||
"integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==",
|
||||
"dev": true
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
||||
"dev": true
|
||||
},
|
||||
"cors": {
|
||||
"version": "2.8.5",
|
||||
@@ -2440,6 +2432,7 @@
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
@@ -2635,6 +2628,7 @@
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
|
||||
"integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"repeating": "^2.0.0"
|
||||
}
|
||||
@@ -2837,12 +2831,14 @@
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"esutils": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
|
||||
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
|
||||
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
|
||||
"dev": true
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
@@ -9903,7 +9899,8 @@
|
||||
"globals": {
|
||||
"version": "9.18.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
|
||||
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
|
||||
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
|
||||
"dev": true
|
||||
},
|
||||
"go-ipfs": {
|
||||
"version": "0.4.17",
|
||||
@@ -10021,6 +10018,7 @@
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
||||
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
@@ -10102,6 +10100,7 @@
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
|
||||
"integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"os-homedir": "^1.0.0",
|
||||
"os-tmpdir": "^1.0.1"
|
||||
@@ -10323,6 +10322,7 @@
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
||||
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"loose-envify": "^1.0.0"
|
||||
}
|
||||
@@ -10770,6 +10770,7 @@
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
|
||||
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
@@ -10933,7 +10934,8 @@
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
|
||||
"dev": true
|
||||
},
|
||||
"isexe": {
|
||||
"version": "2.0.0",
|
||||
@@ -11019,7 +11021,8 @@
|
||||
"js-tokens": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
|
||||
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
|
||||
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
|
||||
"dev": true
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
@@ -11099,7 +11102,8 @@
|
||||
"json5": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
|
||||
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
|
||||
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
|
||||
"dev": true
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "2.4.0",
|
||||
@@ -11174,13 +11178,6 @@
|
||||
"graceful-fs": "^4.1.9"
|
||||
}
|
||||
},
|
||||
"kosmos-schemas": {
|
||||
"version": "github:67P/kosmos-schemas#28a5e9f1fc2e083165e4e02ce3361c3f4fafa592",
|
||||
"from": "github:67P/kosmos-schemas#feature/contribution_date_time",
|
||||
"requires": {
|
||||
"brfs-babel": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"lcid": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
|
||||
@@ -11721,6 +11718,7 @@
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||
}
|
||||
@@ -12028,6 +12026,7 @@
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
},
|
||||
@@ -12035,7 +12034,8 @@
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12127,7 +12127,8 @@
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||
"dev": true
|
||||
},
|
||||
"multiaddr": {
|
||||
"version": "3.1.0",
|
||||
@@ -12321,7 +12322,8 @@
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
|
||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
||||
"dev": true
|
||||
},
|
||||
"number-to-bn": {
|
||||
"version": "1.7.0",
|
||||
@@ -12461,7 +12463,8 @@
|
||||
"os-homedir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
|
||||
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
|
||||
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
|
||||
"dev": true
|
||||
},
|
||||
"os-locale": {
|
||||
"version": "1.4.0",
|
||||
@@ -12475,7 +12478,8 @@
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
|
||||
"dev": true
|
||||
},
|
||||
"over": {
|
||||
"version": "0.0.5",
|
||||
@@ -12771,7 +12775,8 @@
|
||||
"private": {
|
||||
"version": "0.1.8",
|
||||
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
|
||||
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
|
||||
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
|
||||
"dev": true
|
||||
},
|
||||
"process": {
|
||||
"version": "0.5.2",
|
||||
@@ -12782,7 +12787,8 @@
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
||||
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
|
||||
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
|
||||
"dev": true
|
||||
},
|
||||
"promise": {
|
||||
"version": "1.3.0",
|
||||
@@ -13152,6 +13158,7 @@
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
@@ -13171,7 +13178,8 @@
|
||||
"regenerator-runtime": {
|
||||
"version": "0.11.1",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
|
||||
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
|
||||
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
|
||||
"dev": true
|
||||
},
|
||||
"regenerator-transform": {
|
||||
"version": "0.10.1",
|
||||
@@ -13214,6 +13222,7 @@
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
|
||||
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-finite": "^1.0.0"
|
||||
}
|
||||
@@ -13654,7 +13663,8 @@
|
||||
"slash": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
|
||||
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
|
||||
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
|
||||
"dev": true
|
||||
},
|
||||
"slice-ansi": {
|
||||
"version": "0.0.4",
|
||||
@@ -13756,7 +13766,8 @@
|
||||
"source-map": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
|
||||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
|
||||
"dev": true
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.5.11",
|
||||
@@ -13951,6 +13962,7 @@
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
@@ -13991,7 +14003,8 @@
|
||||
"supports-color": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
|
||||
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
|
||||
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
|
||||
"dev": true
|
||||
},
|
||||
"swarm-js": {
|
||||
"version": "0.1.37",
|
||||
@@ -14164,6 +14177,7 @@
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
||||
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"readable-stream": "~2.3.6",
|
||||
"xtend": "~4.0.1"
|
||||
@@ -14209,7 +14223,8 @@
|
||||
"to-fast-properties": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
|
||||
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
|
||||
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
|
||||
"dev": true
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.4.3",
|
||||
@@ -14238,7 +14253,8 @@
|
||||
"trim-right": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
|
||||
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
|
||||
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
|
||||
"dev": true
|
||||
},
|
||||
"truffle": {
|
||||
"version": "4.1.14",
|
||||
@@ -14434,11 +14450,6 @@
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"tv4": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz",
|
||||
"integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM="
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz",
|
||||
@@ -15592,7 +15603,8 @@
|
||||
"xtend": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
|
||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
|
||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
|
||||
"dev": true
|
||||
},
|
||||
"y18n": {
|
||||
"version": "3.2.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "kredits-contracts",
|
||||
"version": "5.0.0",
|
||||
"version": "4.0.2",
|
||||
"description": "Ethereum contracts and npm wrapper for Kredits",
|
||||
"main": "./lib/kredits.js",
|
||||
"directories": {
|
||||
@@ -45,9 +45,7 @@
|
||||
"dependencies": {
|
||||
"ethers": "^4.0.27",
|
||||
"ipfs-http-client": "^30.1.1",
|
||||
"kosmos-schemas": "github:67P/kosmos-schemas#feature/contribution_date_time",
|
||||
"rsvp": "^4.8.2",
|
||||
"tv4": "^1.3.0"
|
||||
"rsvp": "^4.8.2"
|
||||
},
|
||||
"keywords": [
|
||||
"kosmos",
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
const promptly = require('promptly');
|
||||
const { inspect } = require('util');
|
||||
|
||||
const initKredits = require('./helpers/init_kredits.js');
|
||||
|
||||
@@ -27,32 +26,23 @@ module.exports = async function(callback) {
|
||||
|
||||
console.log(`Creating a contribution for contributor account ${contributorAccount} ID: ${contributorId}`);
|
||||
|
||||
[ dateNow, timeNow ] = (new Date()).toISOString().split('T');
|
||||
|
||||
let contributionAttributes = {
|
||||
contributorId,
|
||||
date: dateNow,
|
||||
time: timeNow,
|
||||
amount: await promptly.prompt('Amount: '),
|
||||
description: await promptly.prompt('Description: '),
|
||||
kind: await promptly.prompt('Kind: ', { default: 'dev' }),
|
||||
url: await promptly.prompt('URL: ', { default: '' })
|
||||
}
|
||||
|
||||
const contributorData = await kredits.Contributor.getById(contributorId);
|
||||
contributionAttributes.contributorIpfsHash = contributorData.ipfsHash;
|
||||
|
||||
console.log("\nAdding contribution:");
|
||||
console.log(contributionAttributes);
|
||||
|
||||
kredits.Contribution.addContribution(contributionAttributes, { gasLimit: 300000 })
|
||||
.then(result => {
|
||||
kredits.Contribution.addContribution(contributionAttributes, { gasLimit: 300000 }).then((result) => {
|
||||
console.log("\n\nResult:");
|
||||
console.log(result);
|
||||
callback();
|
||||
})
|
||||
.catch(error => {
|
||||
}).catch((error) => {
|
||||
console.log('Failed to create contribution');
|
||||
callback(inspect(error));
|
||||
callback(error);
|
||||
});
|
||||
}
|
||||
|
||||
363
scripts/deploy-apm.js
Normal file
363
scripts/deploy-apm.js
Normal file
@@ -0,0 +1,363 @@
|
||||
const namehash = require('eth-ens-namehash').hash
|
||||
const keccak256 = require('js-sha3').keccak_256
|
||||
|
||||
const deployENS = require('@aragon/os/scripts/deploy-test-ens')
|
||||
const deployDaoFactory = require('@aragon/os/scripts/deploy-daofactory')
|
||||
const logDeploy = require('@aragon/os/scripts//helpers/deploy-logger')
|
||||
const getAccounts = require('@aragon/os/scripts//helpers/get-accounts')
|
||||
|
||||
const globalArtifacts = this.artifacts // Not injected unless called directly via truffle
|
||||
const globalWeb3 = this.web3 // Not injected unless called directly via truffle
|
||||
|
||||
const ZERO_ADDR = '0x0000000000000000000000000000000000000000'
|
||||
|
||||
const defaultOwner = process.env.OWNER
|
||||
const defaultDaoFactoryAddress = process.env.DAO_FACTORY
|
||||
const defaultENSAddress = process.env.ENS
|
||||
|
||||
module.exports = async (
|
||||
truffleExecCallback,
|
||||
{
|
||||
artifacts = globalArtifacts,
|
||||
web3 = globalWeb3,
|
||||
ensAddress = defaultENSAddress,
|
||||
owner = defaultOwner,
|
||||
daoFactoryAddress = defaultDaoFactoryAddress,
|
||||
verbose = true
|
||||
} = {}
|
||||
) => {
|
||||
const log = (...args) => {
|
||||
if (verbose) { console.log(...args) }
|
||||
}
|
||||
|
||||
const APMRegistry = artifacts.require('APMRegistry')
|
||||
const Repo = artifacts.require('Repo')
|
||||
const ENSSubdomainRegistrar = artifacts.require('ENSSubdomainRegistrar')
|
||||
|
||||
const DAOFactory = artifacts.require('DAOFactory')
|
||||
const APMRegistryFactory = artifacts.require('APMRegistryFactory')
|
||||
const ENS = artifacts.require('ENS')
|
||||
|
||||
const Kernel = artifacts.require('Kernel')
|
||||
const ACL = artifacts.require('ACL')
|
||||
|
||||
const tldName = 'eth'
|
||||
const labelName = 'aragonpm'
|
||||
const tldHash = namehash(tldName)
|
||||
const labelHash = '0x'+keccak256(labelName)
|
||||
const apmNode = namehash(`${labelName}.${tldName}`)
|
||||
|
||||
let ens
|
||||
|
||||
log('Deploying APM...')
|
||||
|
||||
const accounts = await getAccounts(web3)
|
||||
if (!owner) {
|
||||
owner = accounts[0]
|
||||
log('OWNER env variable not found, setting APM owner to the provider\'s first account')
|
||||
}
|
||||
log('Owner:', owner)
|
||||
|
||||
if (!ensAddress) {
|
||||
log('=========')
|
||||
log('Missing ENS! Deploying a custom ENS...')
|
||||
ens = (await deployENS(null, { artifacts, owner, verbose: false })).ens
|
||||
ensAddress = ens.address
|
||||
} else {
|
||||
ens = ENS.at(ensAddress)
|
||||
}
|
||||
|
||||
log('ENS:', ensAddress)
|
||||
log(`TLD: ${tldName} (${tldHash})`)
|
||||
log(`Label: ${labelName} (${labelHash})`)
|
||||
log(`apmNode: ${apmNode}`)
|
||||
|
||||
log('=========')
|
||||
log('Deploying APM bases...')
|
||||
|
||||
const apmRegistryBase = await APMRegistry.new()
|
||||
await logDeploy(apmRegistryBase, { verbose })
|
||||
const apmRepoBase = await Repo.new()
|
||||
await logDeploy(apmRepoBase, { verbose })
|
||||
const ensSubdomainRegistrarBase = await ENSSubdomainRegistrar.new()
|
||||
await logDeploy(ensSubdomainRegistrarBase, { verbose })
|
||||
|
||||
let daoFactory
|
||||
if (daoFactoryAddress) {
|
||||
daoFactory = DAOFactory.at(daoFactoryAddress)
|
||||
const hasEVMScripts = await daoFactory.regFactory() !== ZERO_ADDR
|
||||
|
||||
log(`Using provided DAOFactory (with${hasEVMScripts ? '' : 'out' } EVMScripts):`, daoFactoryAddress)
|
||||
} else {
|
||||
log('Deploying DAOFactory with EVMScripts...')
|
||||
daoFactory = (await deployDaoFactory(null, { artifacts, withEvmScriptRegistryFactory: true, verbose: false })).daoFactory
|
||||
}
|
||||
|
||||
log('Deploying APMRegistryFactory...')
|
||||
const apmFactory = await APMRegistryFactory.new(
|
||||
daoFactory.address,
|
||||
apmRegistryBase.address,
|
||||
apmRepoBase.address,
|
||||
ensSubdomainRegistrarBase.address,
|
||||
ensAddress,
|
||||
'0x00'
|
||||
)
|
||||
await logDeploy(apmFactory, { verbose })
|
||||
|
||||
|
||||
log(`Assigning ENS name (${labelName}.${tldName}) to factory... ${apmFactory.address}`)
|
||||
|
||||
if (await ens.owner(apmNode) === accounts[0]) {
|
||||
log('Transferring name ownership from deployer to APMRegistryFactory')
|
||||
await ens.setOwner(apmNode, apmFactory.address)
|
||||
} else {
|
||||
log('Creating subdomain and assigning it to APMRegistryFactory')
|
||||
try {
|
||||
await ens.setSubnodeOwner(tldHash, labelHash, apmFactory.address)
|
||||
//await ens.setSubnodeOwner(apmNode, keccak256('open'), apmFactory.address)
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
console.error(
|
||||
`Error: could not set the owner of '${labelName}.${tldName}' on the given ENS instance`,
|
||||
`(${ensAddress}). Make sure you have ownership rights over the subdomain.`
|
||||
)
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
log('Deploying APM...')
|
||||
const receipt = await apmFactory.newAPM(tldHash, labelHash, owner)
|
||||
|
||||
log('=========')
|
||||
const apmAddr = receipt.logs.filter(l => l.event == 'DeployAPM')[0].args.apm
|
||||
console.log(receipt.logs);
|
||||
const apmDAO = APMRegistry.at(apmAddr);
|
||||
|
||||
log('Address:', apmAddr)
|
||||
log('Transaction hash:', receipt.tx)
|
||||
|
||||
|
||||
|
||||
|
||||
log('Deploying subdomain APM bases...')
|
||||
|
||||
const subApmRegistryBase = await APMRegistry.new()
|
||||
await logDeploy(subApmRegistryBase, { verbose })
|
||||
const subApmRepoBase = await Repo.new()
|
||||
await logDeploy(subApmRepoBase, { verbose })
|
||||
const subEnsSubdomainRegistrarBase = await ENSSubdomainRegistrar.new()
|
||||
await logDeploy(subEnsSubdomainRegistrarBase, { verbose })
|
||||
|
||||
log('Deploying APMRegistryFactory...')
|
||||
const subApmFactory = await APMRegistryFactory.new(
|
||||
daoFactory.address,
|
||||
subApmRegistryBase.address,
|
||||
subApmRepoBase.address,
|
||||
subEnsSubdomainRegistrarBase.address,
|
||||
ensAddress,
|
||||
'0x00'
|
||||
)
|
||||
await logDeploy(subApmFactory, { verbose })
|
||||
|
||||
|
||||
const kernelAddr = await apmDAO.kernel();
|
||||
console.log(kernelAddr);
|
||||
const aclAddr = await Kernel.at(kernelAddr).acl();
|
||||
const acl = ACL.at(aclAddr);
|
||||
|
||||
const role = await ensSubdomainRegistrarBase.CREATE_NAME_ROLE();
|
||||
const registrarAddr = await apmDAO.registrar();
|
||||
const registrar = ENSSubdomainRegistrar.at(registrarAddr);
|
||||
|
||||
console.log(owner, registrarAddr, role);
|
||||
|
||||
try {
|
||||
await acl.grantPermission(owner, registrarAddr, role);
|
||||
|
||||
log('Deploying subdomain APM...')
|
||||
|
||||
console.log(await acl.hasPermission(owner, registrar.address, role))
|
||||
console.log(subApmFactory.address)
|
||||
await registrar.createNameAndPoint(namehash('open'), subApmFactory.address)
|
||||
|
||||
const subReceipt = await subApmFactory.newAPM(namehash('aragonpm.eth'), namehash('open'), owner)
|
||||
|
||||
log('=========')
|
||||
const subApmAddr = subReceipt.logs.filter(l => l.event == 'DeployAPM')[0].args.apm
|
||||
console.log(subReceipt.logs);
|
||||
console.log(subApmAddr);
|
||||
|
||||
} catch(e) {
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
if (typeof truffleExecCallback === 'function') {
|
||||
// Called directly via `truffle exec`
|
||||
truffleExecCallback()
|
||||
} else {
|
||||
return {
|
||||
apmFactory,
|
||||
ens,
|
||||
apm: APMRegistry.at(apmAddr),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
"
|
||||
|
||||
const namehash = require('eth-ens-namehash').hash
|
||||
const keccak256 = require('js-sha3').keccak_256
|
||||
|
||||
const deployENS = require('@aragon/os/scripts/deploy-test-ens')
|
||||
const deployDaoFactory = require('@aragon/os/scripts/deploy-daofactory')
|
||||
const logDeploy = require('@aragon/os/scripts//helpers/deploy-logger')
|
||||
const getAccounts = require('@aragon/os/scripts//helpers/get-accounts')
|
||||
|
||||
const globalArtifacts = this.artifacts // Not injected unless called directly via truffle
|
||||
const globalWeb3 = this.web3 // Not injected unless called directly via truffle
|
||||
|
||||
const ZERO_ADDR = '0x0000000000000000000000000000000000000000'
|
||||
|
||||
const defaultOwner = process.env.OWNER
|
||||
const defaultDaoFactoryAddress = process.env.DAO_FACTORY
|
||||
const defaultENSAddress = process.env.ENS
|
||||
|
||||
module.exports = async (
|
||||
truffleExecCallback,
|
||||
{
|
||||
artifacts = globalArtifacts,
|
||||
web3 = globalWeb3,
|
||||
ensAddress = defaultENSAddress,
|
||||
owner = defaultOwner,
|
||||
daoFactoryAddress = defaultDaoFactoryAddress,
|
||||
verbose = true
|
||||
} = {}
|
||||
) => {
|
||||
const log = (...args) => {
|
||||
if (verbose) { console.log(...args) }
|
||||
}
|
||||
|
||||
const APMRegistry = artifacts.require('APMRegistry')
|
||||
const Repo = artifacts.require('Repo')
|
||||
const ENSSubdomainRegistrar = artifacts.require('ENSSubdomainRegistrar')
|
||||
|
||||
const DAOFactory = artifacts.require('DAOFactory')
|
||||
const APMRegistryFactory = artifacts.require('APMRegistryFactory')
|
||||
const ENS = artifacts.require('ENS')
|
||||
|
||||
const tldName = 'eth'
|
||||
const labelName = 'open.aragonpm'
|
||||
const tldHash = namehash(tldName)
|
||||
const labelHash = '0x'+keccak256(labelName)
|
||||
const apmNode = namehash(`${labelName}.${tldName}`)
|
||||
|
||||
let ens
|
||||
|
||||
log('Deploying APM...')
|
||||
|
||||
const accounts = await getAccounts(web3)
|
||||
if (!owner) {
|
||||
owner = accounts[0]
|
||||
log('OWNER env variable not found, setting APM owner to the provider\'s first account')
|
||||
}
|
||||
log('Owner:', owner)
|
||||
|
||||
if (!ensAddress) {
|
||||
log('=========')
|
||||
log('Missing ENS! Deploying a custom ENS...')
|
||||
ens = (await deployENS(null, { artifacts, owner, verbose: false })).ens
|
||||
ensAddress = ens.address
|
||||
} else {
|
||||
ens = ENS.at(ensAddress)
|
||||
}
|
||||
|
||||
log('ENS:', ensAddress)
|
||||
log(`TLD: ${tldName} (${tldHash})`)
|
||||
log(`Label: ${labelName} (${labelHash})`)
|
||||
|
||||
log('=========')
|
||||
log('Deploying APM bases...')
|
||||
|
||||
const apmRegistryBase = await APMRegistry.new()
|
||||
await logDeploy(apmRegistryBase, { verbose })
|
||||
const apmRepoBase = await Repo.new()
|
||||
await logDeploy(apmRepoBase, { verbose })
|
||||
const ensSubdomainRegistrarBase = await ENSSubdomainRegistrar.new()
|
||||
await logDeploy(ensSubdomainRegistrarBase, { verbose })
|
||||
|
||||
let daoFactory
|
||||
if (daoFactoryAddress) {
|
||||
daoFactory = DAOFactory.at(daoFactoryAddress)
|
||||
const hasEVMScripts = await daoFactory.regFactory() !== ZERO_ADDR
|
||||
|
||||
log(`Using provided DAOFactory (with${hasEVMScripts ? '' : 'out' } EVMScripts):`, daoFactoryAddress)
|
||||
} else {
|
||||
log('Deploying DAOFactory with EVMScripts...')
|
||||
daoFactory = (await deployDaoFactory(null, { artifacts, withEvmScriptRegistryFactory: true, verbose: false })).daoFactory
|
||||
}
|
||||
|
||||
log('Deploying APMRegistryFactory...')
|
||||
const apmFactory = await APMRegistryFactory.new(
|
||||
daoFactory.address,
|
||||
apmRegistryBase.address,
|
||||
apmRepoBase.address,
|
||||
ensSubdomainRegistrarBase.address,
|
||||
ensAddress,
|
||||
'0x00'
|
||||
)
|
||||
await logDeploy(apmFactory, { verbose })
|
||||
|
||||
log(`Assigning ENS name (${labelName}.${tldName}) to factory...`)
|
||||
|
||||
if (await ens.owner(apmNode) === accounts[0]) {
|
||||
log('Transferring name ownership from deployer to APMRegistryFactory')
|
||||
await ens.setOwner(apmNode, apmFactory.address)
|
||||
} else {
|
||||
log('Creating subdomain and assigning it to APMRegistryFactory')
|
||||
try {
|
||||
await ens.setSubnodeOwner(tldHash, labelHash, apmFactory.address)
|
||||
} catch (err) {
|
||||
console.error(
|
||||
`Error: could not set the owner of '${labelName}.${tldName}' on the given ENS instance`,
|
||||
`(${ensAddress}). Make sure you have ownership rights over the subdomain.`
|
||||
)
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
log('Deploying APM...')
|
||||
const receipt = await apmFactory.newAPM(tldHash, labelHash, owner)
|
||||
|
||||
log('=========')
|
||||
const apmAddr = receipt.logs.filter(l => l.event == 'DeployAPM')[0].args.apm
|
||||
log('# APM:')
|
||||
log('Address:', apmAddr)
|
||||
log('Transaction hash:', receipt.tx)
|
||||
log('=========')
|
||||
|
||||
try {
|
||||
const kernel = await ensSubdomainRegistrarBase.kernel();
|
||||
const acl = await kernel.acl();
|
||||
console.log(acl);
|
||||
let ret = await ensSubdomainRegistrarBase.createNameAndPoint(labelHash, apmAddr).then(console.log).catch(console.log);
|
||||
console.log(ret);
|
||||
} catch(e) {
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (typeof truffleExecCallback === 'function') {
|
||||
// Called directly via `truffle exec`
|
||||
truffleExecCallback()
|
||||
} else {
|
||||
return {
|
||||
apmFactory,
|
||||
ens,
|
||||
apm: APMRegistry.at(apmAddr),
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user