Skip to content

Commit fab0df5

Browse files
committed
add contract to chain
1 parent ea54f75 commit fab0df5

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

lib/chain_manager.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
var fs = require('fs');
22
var web3 = require('web3');
3+
var sha3_256 = require('js-sha3').sha3_256;
34

4-
ChainManager = function() { }
5+
ChainManager = function() {
6+
this.currentChain = {};
7+
}
58

69
ChainManager.prototype.loadConfigFile = function(filename) {
710
try {
@@ -26,7 +29,16 @@ ChainManager.prototype.init = function(env, blockchainConfig) {
2629
var chainId = web3.eth.getBlock(0).hash;
2730

2831
if (this.chainManagerConfig[chainId] === undefined) {
29-
this.chainManagerConfig[chainId] = {contracts: []};
32+
this.chainManagerConfig[chainId] = {contracts: {}};
33+
}
34+
35+
this.currentChain = this.chainManagerConfig[chainId];
36+
}
37+
38+
ChainManager.prototype.addContract = function(contractName, code, address) {
39+
this.currentChain.contracts[sha3_256(code)] = {
40+
name: contractName,
41+
address: address
3042
}
3143
}
3244

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"grunt": "^0.4.5",
1818
"hashmerge": "^1.0.2",
1919
"jasmine": "^2.3.1",
20+
"js-sha3": "^0.3.1",
2021
"meteor-build-client": "^0.1.6",
2122
"methodmissing": "^0.0.3",
2223
"mkdirp": "^0.5.1",

test/chain_manager.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,23 @@ describe('embark.chain_manager', function() {
1111
chainManager.init('development', blockchainConfig);
1212

1313
it('should initialize chain', function() {
14-
assert.equal(chainManager.chainManagerConfig['0x629e768beb87dc8c54a475d310a7196e86c97d0006e5a6d34a8217726c90223f'] != undefined, true);
15-
assert.equal(chainManager.chainManagerConfig['0x629e768beb87dc8c54a475d310a7196e86c97d0006e5a6d34a8217726c90223f'].contracts.length, 0);
14+
var chain = chainManager.chainManagerConfig['0x629e768beb87dc8c54a475d310a7196e86c97d0006e5a6d34a8217726c90223f']
15+
assert.equal(chain != undefined, true);
16+
});
17+
});
18+
19+
describe('#addContract', function() {
20+
21+
it('should register a contract in the chain', function() {
22+
chainManager.addContract("Foo", "123456", "0x123");
23+
24+
var chain = chainManager.chainManagerConfig['0x629e768beb87dc8c54a475d310a7196e86c97d0006e5a6d34a8217726c90223f']
25+
var contract = chain.contracts["d7190eb194ff9494625514b6d178c87f99c5973e28c398969d2233f2960a573e"]
26+
27+
assert.equal(contract.name, "Foo");
28+
assert.equal(contract.address, "0x123");
1629
});
1730

1831
});
32+
1933
});

0 commit comments

Comments
 (0)