Fixing bug verifiying instance

This commit is contained in:
Richard Ramos 2018-05-08 09:46:03 -04:00
parent 7126b4e3e0
commit cd0f768d17
3 changed files with 13 additions and 7 deletions

View File

@ -51,11 +51,11 @@ contract Factory is Controlled {
);
}
function isKernel(bytes32 _codeHash) public returns (bool){
function isKernel(bytes32 _codeHash) public view returns (bool){
return hashToVersion[_codeHash] > 0;
}
function isKernel(address _addr) public returns (bool){
function isKernel(address _addr) public view returns (bool){
return versionMap[_addr] > 0;
}

View File

@ -37,7 +37,7 @@
"IdentityGasRelay": {
"abiFile": "../abi/IdentityGasRelay.json",
"isIdentity": true,
"factoryAddress": "0x5F6cDe612C45039AaC867075703Bc118cEA4D531",
"factoryAddress": "0x6202a2b202Ccf859fd93Ecee33C2D20f20462836",
"kernelVerification": "isKernel(bytes32)",
"allowedFunctions": [
{

View File

@ -59,7 +59,8 @@ class MessageProcessor {
const contract = this.settings.getContractByTopic(message.topic);
const instanceCodeHash = this.web3.utils.soliditySha3(await this.web3.eth.getCode(input.address));
const kernelVerifSignature = this.web3.utils.soliditySha3(contract.kernelVerification).slice(0, 10);
if(instanceCodeHash == null) return false;
let verificationResult = await this.web3.eth.call({
to: contract.factoryAddress,
data: kernelVerifSignature + instanceCodeHash.slice(2)});
@ -133,9 +134,14 @@ class MessageProcessor {
if(!await this._validateInput(message, input)) return; // TODO Log
if(contract.isIdentity && !this._validateInstance(message, input))
return this._reply("Invalid identity instance", message);
if(contract.isIdentity){
let validInstance = await this._validateInstance(message, input);
if(!validInstance){
return this._reply("Invalid identity instance", message);
}
}
const params = this._obtainParametersFunc(contract, input);
const token = this.settings.getToken(params('gasToken'));
@ -176,7 +182,7 @@ class MessageProcessor {
}
} catch(exc){
if(exc.message.indexOf("revert") > -1)
return this._reply("Transaction will revert");
return this._reply("Transaction will revert", message);
}
const estimatedGasInToken = estimatedGas.mul(factor);