Dynamically get app ids from the namehash
This dynamically hashes the app id which makes it easier to manually set contract addresses. This is useful in development environments with no default network ids. The used apm (which is part of the app id hash) is configurable. usage: new Kredits(provider, signer, { addresses: { Kernel: '0x...' }, apm: 'aragonpm.eth' })
This commit is contained in:
parent
a24f80d44f
commit
fedb10c5da
@ -1,14 +0,0 @@
|
||||
{
|
||||
"4": {
|
||||
"Contribution": "0x09f5274cba299b46c5be722ef672d10eef7a2ef980b612aef529d74fb9da7643",
|
||||
"Contributor": "0x8e50972b062e83b48dbb2a68d8a058f2a07227ca183c144dc974e6da3186d7e9",
|
||||
"Proposal": "0xb48bc8b4e539823f3be98d67f4130c07b5d29cc998993debcdea15c6faf4cf8a",
|
||||
"Token": "0x82c0e483537d703bb6f0fc799d2cc60d8f62edcb0f6d26d5571a92be8485b112"
|
||||
},
|
||||
"41787949": {
|
||||
"Contribution": "0xe401b988b8af39119004de5c7691a60391d69d873b3120682a8c61306a4883ce",
|
||||
"Contributor": "0x7829d33291d6e118d115ce321de9341894a2da120bd35505fc03b98f715c606d",
|
||||
"Proposal": "0x15d03d435b24a74317868c24fda4646302076b59272241a122a3868eb5c745da",
|
||||
"Token": "0x85b0f626cecde6188d11940904fedeb16a4d49b0e8c878b9d109b23d38062ca7"
|
||||
}
|
||||
}
|
@ -1,8 +1,13 @@
|
||||
const AppIds = require('../app_ids.json');
|
||||
const namehash = require('eth-ens-namehash').hash;
|
||||
const Base = require('./base');
|
||||
|
||||
const KERNEL_APP_ADDR_NAMESPACE = '0xd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb';
|
||||
|
||||
class Kernel extends Base {
|
||||
constructor(contract) {
|
||||
super(contract);
|
||||
this.apm = 'aragonpm.eth'; // can be overwritten if needed
|
||||
}
|
||||
|
||||
getApp(appName) {
|
||||
if (appName === 'Acl') {
|
||||
@ -12,9 +17,7 @@ class Kernel extends Base {
|
||||
}
|
||||
|
||||
appNamehash(appName) {
|
||||
// actually provider.network is an asynchronous property.
|
||||
// but when we call this function kredits is already initialized and the network is already loaded
|
||||
return AppIds[this.contract.provider.network.chainId.toString()][appName];
|
||||
return namehash(`kredits-${appName.toLowerCase()}.${this.apm}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,7 @@ class Kredits {
|
||||
|
||||
this.provider = provider;
|
||||
this.signer = signer;
|
||||
this.options = options;
|
||||
this.addresses = addresses || {};
|
||||
this.abis = abis || ABIS;
|
||||
this.ipfs = new IPFS(ipfsConfig);
|
||||
@ -66,7 +67,12 @@ class Kredits {
|
||||
}
|
||||
|
||||
get Kernel() {
|
||||
return this.contractFor('Kernel');
|
||||
let k = this.contractFor('Kernel');
|
||||
// in case we want to use a special apm (e.g. development vs. production)
|
||||
if (this.options.apm) {
|
||||
k.apm = this.options.apm;
|
||||
}
|
||||
return k;
|
||||
}
|
||||
|
||||
get Contributor() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user