pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;
interface InvInterface {
function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) external;
}
interface XInvInterface {
function syncDelegate(address user) external;
}
contract MultiDelegator {
InvInterface public inv;
XInvInterface xinv;
constructor (InvInterface _inv, XInvInterface _xinv) public {
inv = _inv;
xinv = _xinv;
}
function delegateBySig(address delegatee, address[] memory delegator, uint[] memory nonce, uint[] memory expiry, uint8[] memory v, bytes32[] memory r, bytes32[] memory s) public {
for (uint256 i = 0; i < nonce.length; i++) {
inv.delegateBySig(delegatee, nonce[i], expiry[i], v[i], r[i], s[i]);
xinv.syncDelegate(delegator[i]);
}
}
}
{
"compilationTarget": {
"contracts/token/MultiDelegator.sol": "MultiDelegator"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"contract InvInterface","name":"_inv","type":"address"},{"internalType":"contract XInvInterface","name":"_xinv","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"address[]","name":"delegator","type":"address[]"},{"internalType":"uint256[]","name":"nonce","type":"uint256[]"},{"internalType":"uint256[]","name":"expiry","type":"uint256[]"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"inv","outputs":[{"internalType":"contract InvInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]