diff --git a/.circleci/config.yml b/.circleci/config.yml
index 561bc7601..81d5c061b 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -11,7 +11,7 @@ jobs:
steps:
- run:
|
- sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.12/solc-static-linux -O /usr/local/bin/solc
+ sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.13/solc-static-linux -O /usr/local/bin/solc
sudo chmod +x /usr/local/bin/solc
- checkout
- restore_cache:
@@ -61,7 +61,7 @@ jobs:
- store_artifacts:
path: ~/junit
parallelism: 3
- resource_class: large
+ resource_class: xlarge
verify:
docker:
@@ -81,7 +81,7 @@ jobs:
steps:
- run:
|
- sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.12/solc-static-linux -O /usr/local/bin/solc
+ sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.13/solc-static-linux -O /usr/local/bin/solc
sudo chmod +x /usr/local/bin/solc
- checkout
- restore_cache:
@@ -137,7 +137,7 @@ jobs:
- codecov/upload:
file: ~/repo/coverage/coverage-final.json
parallelism: 10
- resource_class: large
+ resource_class: xlarge
lint:
docker:
diff --git a/.gitignore b/.gitignore
index 15b148bb3..4418d2283 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,4 +36,5 @@ scenario/build/webpack.js
scenario/.tscache
tests/scenarios/
junit.xml
-.build
\ No newline at end of file
+.build
+.last_confs
\ No newline at end of file
diff --git a/.soliumrc.json b/.soliumrc.json
index ea58a045c..c3600c074 100644
--- a/.soliumrc.json
+++ b/.soliumrc.json
@@ -13,6 +13,7 @@
"error",
200
],
+ "security/no-block-members": "off",
"security/no-inline-assembly": "off",
"security/no-low-level-calls": "off"
}
diff --git a/Makefile b/Makefile
index eb809a419..8f73e3432 100644
--- a/Makefile
+++ b/Makefile
@@ -24,6 +24,19 @@ spec/certora/Math/%.cvl:
--verify \
MathCertora:$@
+spec/certora/Comp/%.cvl:
+ $(CERTORA_RUN) \
+ spec/certora/contracts/CompCertora.sol \
+ --settings -b=4,-graphDrawLimit=0 \
+ --verify \
+ CompCertora:$@
+
+spec/certora/Governor/%.cvl:
+ $(CERTORA_RUN) \
+ spec/certora/contracts/GovernorAlphaCertora.sol \
+ --verify \
+ GovernorAlphaCertora:$@
+
spec/certora/Comptroller/%.cvl:
$(CERTORA_RUN) \
spec/certora/contracts/ComptrollerCertora.sol \
@@ -41,7 +54,7 @@ spec/certora/cDAI/%.cvl:
spec/certora/contracts/mcd/pot.sol:Pot \
spec/certora/contracts/mcd/vat.sol:Vat \
spec/certora/contracts/mcd/join.sol:DaiJoin \
- contracts/test/BoolComptroller.sol \
+ tests/Contracts/BoolComptroller.sol \
--link \
CDaiDelegateCertora:comptroller=BoolComptroller \
CDaiDelegateCertora:underlying=Dai \
diff --git a/README.md b/README.md
index e433b44a6..4dd5217fa 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,16 @@ We detail a few of the core contracts in the Compound protocol.
The risk model contract, which validates permissible user actions and disallows actions if they do not fit certain risk parameters. For instance, the Comptroller enforces that each borrowing user must maintain a sufficient collateral balance across all cTokens.
+
+ Comp
+ The Compound Governance Token (COMP). Holders of this token have the ability to govern the protocol via the governor contract.
+
+
+
+ Governor Alpha
+ The administrator of the Compound timelock contract. Holders of Comp token may create and vote on proposals which will be queued into the Compound timelock and then have effects on Compound cToken and Copmtroller contracts. This contract may be replaced in the future with a beta version.
+
+
InterestRateModel
Contracts which define interest rate models. These models algorithmically determine interest rates based on the current utilization of a given market (that is, how much of the supplied assets are liquid versus borrowed).
@@ -73,28 +83,12 @@ You can then compile and deploy the contracts with:
Note: this project does not use truffle migrations. The command above is the best way to deploy contracts. To view the addresses of contracts, please inspect the `networks/development.json` file that is produced as an artifact of that command.
-Console
--------
-
-After you deploy, as above, you can run a truffle console with the following command:
-
- yarn run console
-
-This command will create a truffle-like build directory and start a truffle console, thus you can then run:
-
- truffle(rinkeby)> cDAI.deployed().then((cdai) => cdai.borrowRatePerBlock.call())
-
-
-You can also specify a network (rinkeby, ropsten, kovan, goerli or mainnet):
-
- yarn run console rinkeby
-
REPL
----
The Compound Protocol has a simple scenario evaluation tool to test and evaluate scenarios which could occur on the blockchain. This is primarily used for constructing high-level integration tests. The tool also has a REPL to interact with local the Compound Protocol (similar to `truffle console`).
- yarn run repl
+ yarn repl
> Read CToken cBAT Address
Command: Read CToken cBAT Address
@@ -113,12 +107,6 @@ Mocha contract tests are defined under the [test directory](https://github.com/c
yarn run test
-or with inspection (visit chrome://inspect) and look for a remote target after running:
-
- node --inspect node_modules/truffle-core/cli.js test
-
-Assertions used in our tests are provided by [ChaiJS](http://chaijs.com).
-
Integration Specs
-----------------
@@ -133,7 +121,6 @@ Code Coverage
-------------
To run code coverage, run:
- scripts/ganache-coverage # run ganache in coverage mode
yarn run coverage
Linting
@@ -153,18 +140,9 @@ To run in docker:
# Run a shell to the built image
docker run -it compound-protocol /bin/sh
-From within a docker shell, you can interact locally with the protocol via ganache and truffle:
-
- > ganache-cli &
- > yarn run deploy
- > yarn run console
- truffle(development)> cDAI.deployed().then((contract) => cdai = contract);
- truffle(development)> cdai.borrowRatePerBlock.call().then((rate) => rate.toNumber())
- 20
-
Discussion
----------
For any concerns with the protocol, visit us on [Discord](https://compound.finance/discord) to discuss.
-_© Copyright 2019, Compound Labs, Inc._
+_© Copyright 2020, Compound Labs, Inc._
diff --git a/contracts/EIP20Interface.sol b/contracts/EIP20Interface.sol
index 0c8935aae..f0f8e69bf 100644
--- a/contracts/EIP20Interface.sol
+++ b/contracts/EIP20Interface.sol
@@ -5,6 +5,9 @@ pragma solidity ^0.5.12;
* https://eips.ethereum.org/EIPS/eip-20
*/
interface EIP20Interface {
+ function name() external view returns (string memory);
+ function symbol() external view returns (string memory);
+ function decimals() external view returns (uint8);
/**
* @notice Get the total number of tokens in circulation
diff --git a/contracts/Governance/Comp.sol b/contracts/Governance/Comp.sol
new file mode 100644
index 000000000..091d3452b
--- /dev/null
+++ b/contracts/Governance/Comp.sol
@@ -0,0 +1,285 @@
+pragma solidity ^0.5.12;
+pragma experimental ABIEncoderV2;
+
+import "../EIP20Interface.sol";
+import "../SafeMath.sol";
+
+/**
+ * @title Compound's Governance Token Contract
+ * @notice Immutable tokens for Compound Governors
+ * @author Compound
+ */
+contract Comp is EIP20Interface {
+ using SafeMath for uint;
+
+ /// @notice EIP-20 token name for this token
+ string public constant name = "Compound Governance Token";
+
+ /// @notice EIP-20 token symbol for this token
+ string public constant symbol = "COMP";
+
+ /// @notice EIP-20 token decimals for this token
+ uint8 public constant decimals = 18;
+
+ /// @notice Total number of tokens in circulation
+ uint public constant totalSupply = 10000000e18; // 10 million Comp
+
+ /// @notice Official record of token balances for each account
+ mapping (address => uint) public balanceOf;
+
+ /// @notice Allowance amounts on behalf of others
+ mapping (address => mapping (address => uint)) public allowance;
+
+ /// @notice A record of each accounts delegate
+ mapping (address => address) public delegates;
+
+ /// @notice A checkpoint for marking number of votes from a given block
+ struct Checkpoint {
+ uint32 fromBlock;
+ uint96 votes;
+ }
+
+ /// @notice A record of votes checkpoints for each account, by index
+ mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
+
+ /// @notice The number of checkpoints for each account
+ mapping (address => uint32) public numCheckpoints;
+
+ /// @notice The EIP-712 typehash for the contract's domain
+ bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
+
+ /// @notice The EIP-712 typehash for the delegation struct used by the contract
+ bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");
+
+ /// @notice A record of states for signing / validating signatures
+ mapping (address => uint) public nonces;
+
+ /// @notice An event thats emitted when an account changes their delegate
+ event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
+
+ /// @notice An event thats emitted when a delegate account's vote balance changes
+ event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);
+
+ /**
+ * @notice Construct a new Comp token
+ * @param account The initial account to grant all the tokens
+ */
+ constructor(address account) public {
+ balanceOf[account] = totalSupply;
+ emit Transfer(address(0), account, totalSupply);
+ }
+
+ /**
+ * @notice Approve `spender` to transfer up to `amount` from `src`
+ * @dev This will overwrite the approval amount for `spender`
+ * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
+ * @param spender The address of the account which may transfer tokens
+ * @param amount The number of tokens that are approved (2^256-1 means infinite)
+ * @return Whether or not the approval succeeded
+ */
+ function approve(address spender, uint amount) external returns (bool) {
+ allowance[msg.sender][spender] = amount;
+
+ emit Approval(msg.sender, spender, amount);
+ return true;
+ }
+
+ /**
+ * @notice Transfer `amount` tokens from `msg.sender` to `dst`
+ * @param dst The address of the destination account
+ * @param amount The number of tokens to transfer
+ * @return Whether or not the transfer succeeded
+ */
+ function transfer(address dst, uint amount) external returns (bool) {
+ _transferTokens(msg.sender, dst, amount);
+ return true;
+ }
+
+ /**
+ * @notice Transfer `amount` tokens from `src` to `dst`
+ * @param src The address of the source account
+ * @param dst The address of the destination account
+ * @param amount The number of tokens to transfer
+ * @return Whether or not the transfer succeeded
+ */
+ function transferFrom(address src, address dst, uint amount) external returns (bool) {
+ address spender = msg.sender;
+ uint spenderAllowance = allowance[src][spender];
+
+ if (spender != src && spenderAllowance != uint(-1)) {
+ uint newAllowance = spenderAllowance.sub(amount, "Comp::transferFrom: transfer amount exceeds spender allowance");
+ allowance[src][spender] = newAllowance;
+
+ emit Approval(src, spender, newAllowance);
+ }
+
+ _transferTokens(src, dst, amount);
+ return true;
+ }
+
+ /**
+ * @notice Delegate votes from `msg.sender` to `delegatee`
+ * @param delegatee The address to delegate votes to
+ */
+ function delegate(address delegatee) public {
+ return _delegate(msg.sender, delegatee);
+ }
+
+ /**
+ * @notice Delegates votes from signatory to `delegatee`
+ * @param delegatee The address to delegate votes to
+ * @param nonce The contract state required to match the signature
+ * @param expiry The time at which to expire the signature
+ * @param v The recovery byte of the signature
+ * @param r Half of the ECDSA signature pair
+ * @param s Half of the ECDSA signature pair
+ */
+ function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
+ bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
+ bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
+ bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
+ address signatory = ecrecover(digest, v, r, s);
+ require(signatory != address(0), "Comp::delegateBySig: invalid signature");
+ require(nonce == nonces[signatory]++, "Comp::delegateBySig: invalid nonce");
+ require(now <= expiry, "Comp::delegateBySig: signature expired");
+ return _delegate(signatory, delegatee);
+ }
+
+ /**
+ * @notice Gets the current votes balance for `account`
+ * @param account The address to get votes balance
+ * @return The number of current votes for `account`
+ */
+ function getCurrentVotes(address account) external view returns (uint96) {
+ uint32 length = numCheckpoints[account];
+ return length == 0 ? 0 : checkpoints[account][length - 1].votes;
+ }
+
+ /**
+ * @notice Determine the prior number of votes for an account as of a block number
+ * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
+ * @param account The address of the account to check
+ * @param blockNumber The block number to get the vote balance at
+ * @return The number of votes the account had as of the given block
+ */
+ function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
+ require(blockNumber < block.number, "Comp::getPriorVotes: not yet determined");
+
+ uint32 length = numCheckpoints[account];
+ if (length == 0) {
+ return 0;
+ }
+
+ // First check most recent balance
+ if (checkpoints[account][length - 1].fromBlock <= blockNumber) {
+ return checkpoints[account][length - 1].votes;
+ }
+
+ // Next check implicit zero balance
+ if (checkpoints[account][0].fromBlock > blockNumber) {
+ return 0;
+ }
+
+ uint32 lower = 0;
+ uint32 upper = length - 1;
+ while (upper > lower) {
+ uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
+ Checkpoint memory cp = checkpoints[account][center];
+ if (cp.fromBlock == blockNumber) {
+ return cp.votes;
+ } else if (cp.fromBlock < blockNumber) {
+ lower = center;
+ } else {
+ upper = center - 1;
+ }
+ }
+ return checkpoints[account][lower].votes;
+ }
+
+ function _delegate(address delegator, address delegatee) internal {
+ address currentDelegate = delegates[delegator];
+ uint delegatorBalance = balanceOf[delegator];
+ delegates[delegator] = delegatee;
+
+ emit DelegateChanged(delegator, currentDelegate, delegatee);
+
+ if (currentDelegate != delegatee && delegatorBalance > 0) {
+ _decreaseVotes(currentDelegate, delegatorBalance);
+ _increaseVotes(delegatee, delegatorBalance);
+ }
+ }
+
+ function _pushCheckpoint(address delegatee, uint fromBlock, uint96 votes) internal {
+ require(fromBlock < 2**32, "Comp::_pushCheckpoint: block number exceeds 32 bits");
+ checkpoints[delegatee][numCheckpoints[delegatee]++] = Checkpoint(uint32(fromBlock), votes);
+ }
+
+ function _transferTokens(address src, address dst, uint amount) internal {
+ require(src != address(0), "Comp::_transferTokens: cannot transfer from the zero address");
+ require(dst != address(0), "Comp::_transferTokens: cannot transfer to the zero address");
+
+ balanceOf[src] = balanceOf[src].sub(amount, "Comp::_transferTokens: transfer amount exceeds balance");
+ balanceOf[dst] = balanceOf[dst].add(amount, "Comp::_transferTokens: transfer amount overflows");
+ emit Transfer(src, dst, amount);
+
+ address srcDelegate = delegates[src];
+ address dstDelegate = delegates[dst];
+ if (srcDelegate != dstDelegate) {
+ _decreaseVotes(srcDelegate, amount);
+ _increaseVotes(dstDelegate, amount);
+ }
+ }
+
+ function _decreaseVotes(address delegatee, uint amount) internal {
+ if (delegatee == address(0)) {
+ return;
+ }
+
+ uint32 length = numCheckpoints[delegatee];
+
+ Checkpoint storage currentCheckpoint = checkpoints[delegatee][length - 1];
+ uint96 currentVotes = currentCheckpoint.votes;
+ uint96 newVotesAmount = uint96(uint(currentVotes).sub(amount, "Comp::_decreaseVotes: vote amount exceeds previous vote balance"));
+
+ if (currentCheckpoint.fromBlock < block.number) {
+ _pushCheckpoint(delegatee, block.number, newVotesAmount);
+ } else {
+ currentCheckpoint.votes = newVotesAmount;
+ }
+
+ emit DelegateVotesChanged(delegatee, uint(currentVotes), uint(newVotesAmount));
+ }
+
+ function _increaseVotes(address delegatee, uint amount) internal {
+ if (delegatee == address(0)) {
+ return;
+ }
+
+ uint32 length = numCheckpoints[delegatee];
+
+ uint96 currentVotesAmount;
+ uint96 newVotesAmount;
+
+ if (length == 0) {
+ currentVotesAmount = 0;
+ newVotesAmount = uint96(amount);
+ _pushCheckpoint(delegatee, block.number, newVotesAmount);
+ } else if (checkpoints[delegatee][length - 1].fromBlock < block.number) {
+ currentVotesAmount = checkpoints[delegatee][length - 1].votes;
+ newVotesAmount = uint96(uint(currentVotesAmount).add(amount, "Comp::_increaseVotes: vote amount overflows"));
+ _pushCheckpoint(delegatee, block.number, newVotesAmount);
+ } else {
+ currentVotesAmount = checkpoints[delegatee][length - 1].votes;
+ newVotesAmount = uint96(uint(currentVotesAmount).add(amount, "Comp::_increaseVotes: vote amount overflows"));
+ checkpoints[delegatee][length - 1].votes = newVotesAmount;
+ }
+
+ emit DelegateVotesChanged(delegatee, currentVotesAmount, newVotesAmount);
+ }
+
+ function getChainId() internal pure returns (uint) {
+ uint256 chainId;
+ assembly { chainId := chainid() }
+ return chainId;
+ }
+}
diff --git a/contracts/Governance/GovernorAlpha.sol b/contracts/Governance/GovernorAlpha.sol
new file mode 100644
index 000000000..caf126d43
--- /dev/null
+++ b/contracts/Governance/GovernorAlpha.sol
@@ -0,0 +1,302 @@
+pragma solidity ^0.5.12;
+pragma experimental ABIEncoderV2;
+
+import "../SafeMath.sol";
+
+interface TimelockInterface {
+ function delay() external view returns (uint);
+ function GRACE_PERIOD() external view returns (uint);
+ function acceptAdmin() external;
+ function queueTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external returns (bytes32);
+ function cancelTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external;
+ function executeTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external payable returns (bytes memory);
+}
+
+interface CompInterface {
+ function getPriorVotes(address account, uint blockNumber) external view returns (uint96);
+}
+
+contract GovernorAlpha {
+ using SafeMath for uint;
+
+ /// @notice The name of this contract
+ string public constant name = "Compound Governor Alpha";
+
+ /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
+ function quorumVotes() public pure returns (uint) { return 600000e18; } // 600,000 = 6% of Comp
+
+ /// @notice The number of votes required in order for a voter to become a proposer
+ function proposalThreshold() public pure returns (uint) { return 400000e18; } // 400,000 = 4% of Comp
+
+ /// @notice The delay before voting on a proposal may take place, once proposed
+ function votingDelay() public pure returns (uint) { return 1; }
+
+ /// @notice The duration of voting on a proposal, in blocks
+ function votingPeriod() public pure returns (uint) { return 17280; } // 3 days in blocks
+
+ /// @notice The address of the Compound Protocol Timelock
+ TimelockInterface public timelock;
+
+ /// @notice The address of the Compound Governance Token
+ CompInterface public comp;
+
+ /// @notice The address of the Governor Guardian
+ address public guardian;
+
+ /// @notice The total number of proposals
+ uint public proposalCount;
+
+ struct Proposal {
+ /// @notice Unique id for looking up a proposal
+ uint id;
+
+ /// @notice Creator of the proposal
+ address proposer;
+
+ /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds
+ uint eta;
+
+ /// @notice the ordered list of target addresses for calls to be made
+ address[] targets;
+
+ /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made
+ uint[] values;
+
+ /// @notice The ordered list of function signatures to be called
+ string[] signatures;
+
+ /// @notice The ordered list of calldata to be passed to each call
+ bytes[] calldatas;
+
+ /// @notice The block at which voting begins: holders must delegate their votes prior to this block
+ uint startBlock;
+
+ /// @notice The block at which voting ends: votes must be cast prior to this block
+ uint endBlock;
+
+ /// @notice Current number of votes in favor of this proposal
+ uint forVotes;
+
+ /// @notice Current number of votes in opposition to this proposal
+ uint againstVotes;
+
+ /// @notice Flag marking whether the proposal has been canceled
+ bool canceled;
+
+ /// @notice Flag marking whether the proposal has been executed
+ bool executed;
+
+ /// @notice Receipts of ballots for the entire set of voters
+ mapping (address => Receipt) receipts;
+ }
+
+ /// @notice Ballot receipt record for a voter
+ struct Receipt {
+ /// @notice Whether or not a vote has been cast
+ bool hasVoted;
+
+ /// @notice Whether or not the voter supports the proposal
+ bool support;
+
+ /// @notice The number of votes the voter had, which were cast
+ uint96 votes;
+ }
+
+ /// @notice Possible states that a proposal may be in
+ enum ProposalState {
+ Pending,
+ Active,
+ Canceled,
+ Defeated,
+ Succeeded,
+ Queued,
+ Expired,
+ Executed
+ }
+
+ /// @notice The official record of all proposals ever proposed
+ mapping (uint => Proposal) public proposals;
+
+ /// @notice The latest proposal for each proposer
+ mapping (address => uint) public latestProposalIds;
+
+ /// @notice The EIP-712 typehash for the contract's domain
+ bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
+
+ /// @notice The EIP-712 typehash for the ballot struct used by the contract
+ bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)");
+
+ /// @notice An event emitted when a new proposal is created
+ event NewProposal(uint id, string description);
+
+ /// @notice An event emitted when a vote has been cast on a proposal
+ event VoteCast(uint proposalId, bool support, uint votes);
+
+ /// @notice An event emitted when a proposal has been canceled
+ event ProposalCanceled(uint id);
+
+ /// @notice An event emitted when a proposal has been queued in the Timelock
+ event ProposalQueued(uint id, uint eta);
+
+ /// @notice An event emitted when a proposal has been executed in the Timelock
+ event ProposalExecuted(uint id, uint eta);
+
+ constructor(address timelock_, address comp_, address guardian_) public {
+ timelock = TimelockInterface(timelock_);
+ comp = CompInterface(comp_);
+ guardian = guardian_;
+ }
+
+ function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) {
+ require(comp.getPriorVotes(msg.sender, block.number.sub(1)) > proposalThreshold(), "GovernorAlpha::propose: proposer votes below proposal threshold");
+ require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorAlpha::propose: proposal function information arity mismatch");
+ require(targets.length != 0, "GovernorAlpha::propose: must provide actions");
+
+ uint latestProposalId = latestProposalIds[msg.sender];
+ if (latestProposalId != 0) {
+ ProposalState proposersLatestProposalState = state(latestProposalId);
+ require(proposersLatestProposalState != ProposalState.Active, "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal");
+ require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal");
+ }
+
+ proposalCount++;
+ Proposal memory newProposal = Proposal({
+ id: proposalCount,
+ proposer: msg.sender,
+ eta: 0,
+ targets: targets,
+ values: values,
+ signatures: signatures,
+ calldatas: calldatas,
+ startBlock: block.number.add(votingDelay()),
+ endBlock: block.number.add(votingDelay()).add(votingPeriod()),
+ forVotes: 0,
+ againstVotes: 0,
+ canceled: false,
+ executed: false
+ });
+
+ proposals[newProposal.id] = newProposal;
+ latestProposalIds[newProposal.proposer] = newProposal.id;
+
+ emit NewProposal(newProposal.id, description);
+ return newProposal.id;
+ }
+
+ function queue(uint proposalId) public {
+ require(state(proposalId) == ProposalState.Succeeded, "GovernorAlpha::queue: proposal can only be queued if it is succeeded");
+ Proposal storage proposal = proposals[proposalId];
+ proposal.eta = block.timestamp.add(timelock.delay());
+ for (uint i = 0; i < proposal.targets.length; i++) {
+ timelock.queueTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
+ }
+ emit ProposalQueued(proposalId, proposal.eta);
+ }
+
+ function execute(uint proposalId) public payable {
+ require(state(proposalId) == ProposalState.Queued, "GovernorAlpha::execute: proposal can only be executed if it is queued");
+ Proposal storage proposal = proposals[proposalId];
+ proposal.executed = true;
+ for (uint i = 0; i < proposal.targets.length; i++) {
+ timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
+ }
+ emit ProposalExecuted(proposalId, proposal.eta);
+ }
+
+ function cancel(uint proposalId) public {
+ ProposalState state = state(proposalId);
+ require(state != ProposalState.Executed, "GovernorAlpha::cancel: cannot cancel executed proposal");
+
+ Proposal storage proposal = proposals[proposalId];
+ require(msg.sender == guardian || comp.getPriorVotes(proposal.proposer, block.number.sub(1)) < proposalThreshold(), "GovernorAlpha::cancel: proposer above threshold");
+
+ proposal.canceled = true;
+ for (uint i = 0; i < proposal.targets.length; i++) {
+ timelock.cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
+ }
+
+ emit ProposalCanceled(proposalId);
+ }
+
+ function getProposalFunctionData(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {
+ Proposal memory p = proposals[proposalId];
+ return (p.targets, p.values, p.signatures, p.calldatas);
+ }
+
+ function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) {
+ return proposals[proposalId].receipts[voter];
+ }
+
+ function state(uint proposalId) public view returns (ProposalState) {
+ require(proposalCount >= proposalId && proposalId > 0, "GovernorAlpha::state: invalid proposal id");
+ Proposal memory proposal = proposals[proposalId];
+
+ if (proposal.canceled == true) return ProposalState.Canceled;
+ if (block.number <= proposal.startBlock) { return ProposalState.Pending; }
+ if (block.number <= proposal.endBlock) { return ProposalState.Active; }
+ if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()) { return ProposalState.Defeated; }
+ if (proposal.eta == 0) { return ProposalState.Succeeded; }
+ if (proposal.executed) { return ProposalState.Executed; }
+ if (block.timestamp >= proposal.eta.add(timelock.GRACE_PERIOD())) { return ProposalState.Expired; }
+ return ProposalState.Queued;
+ }
+
+ function castVote(uint proposalId, bool support) public {
+ return _castVote(msg.sender, proposalId, support);
+ }
+
+ function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public {
+ bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
+ bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));
+ bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
+ address signatory = ecrecover(digest, v, r, s);
+ require(signatory != address(0), "GovernorAlpha::castVoteBySig: invalid signature");
+ return _castVote(signatory, proposalId, support);
+ }
+
+ function _castVote(address voter, uint proposalId, bool support) internal {
+ require(state(proposalId) == ProposalState.Active, "GovernorAlpha::castVote: voting is closed");
+ Proposal storage proposal = proposals[proposalId];
+ Receipt storage receipt = proposal.receipts[voter];
+ require(receipt.hasVoted == false, "GovernorAlpha::castVote: voter already voted");
+ uint96 votes = comp.getPriorVotes(voter, proposal.startBlock);
+
+ if (support) {
+ proposal.forVotes = proposal.forVotes.add(votes);
+ } else {
+ proposal.againstVotes = proposal.againstVotes.add(votes);
+ }
+
+ receipt.hasVoted = true;
+ receipt.support = support;
+ receipt.votes = votes;
+
+ emit VoteCast(proposalId, support, votes);
+ }
+
+ function __acceptAdmin() public {
+ require(msg.sender == guardian, "GovernorAlpha::__acceptAdmin: sender must be gov guardian");
+ timelock.acceptAdmin();
+ }
+
+ function __abdicate() public {
+ require(msg.sender == guardian, "GovernorAlpha::__abdicate: sender must be gov guardian");
+ guardian = address(0);
+ }
+
+ function __queueSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {
+ require(msg.sender == guardian, "GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian");
+ timelock.queueTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta);
+ }
+
+ function __executeSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {
+ require(msg.sender == guardian, "GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian");
+ timelock.executeTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta);
+ }
+
+ function getChainId() internal pure returns (uint) {
+ uint256 chainId;
+ assembly { chainId := chainid() }
+ return chainId;
+ }
+}
diff --git a/contracts/SafeMath.sol b/contracts/SafeMath.sol
index 5374faf51..d42f81ce8 100644
--- a/contracts/SafeMath.sol
+++ b/contracts/SafeMath.sol
@@ -18,8 +18,7 @@ pragma solidity ^0.5.12;
*/
library SafeMath {
/**
- * @dev Returns the addition of two unsigned integers, reverting on
- * overflow.
+ * @dev Returns the addition of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `+` operator.
*
@@ -34,29 +33,39 @@ library SafeMath {
}
/**
- * @dev Returns the subtraction of two unsigned integers, reverting on
- * overflow (when the result is negative).
+ * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
+ *
+ * Counterpart to Solidity's `+` operator.
+ *
+ * Requirements:
+ * - Addition cannot overflow.
+ */
+ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
+ uint256 c = a + b;
+ require(c >= a, errorMessage);
+
+ return c;
+ }
+
+ /**
+ * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
- * - Subtraction cannot overflow.
+ * - Subtraction cannot underflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
- return sub(a, b, "SafeMath: subtraction overflow");
+ return sub(a, b, "SafeMath: subtraction underflow");
}
/**
- * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
- * overflow (when the result is negative).
+ * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
- * - Subtraction cannot overflow.
- *
- * NOTE: This is a feature of the next version of OpenZeppelin Contracts.
- * @dev Get it via `npm install @openzeppelin/contracts@next`.
+ * - Subtraction cannot underflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
@@ -66,8 +75,7 @@ library SafeMath {
}
/**
- * @dev Returns the multiplication of two unsigned integers, reverting on
- * overflow.
+ * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `*` operator.
*
@@ -89,8 +97,8 @@ library SafeMath {
}
/**
- * @dev Returns the integer division of two unsigned integers. Reverts on
- * division by zero. The result is rounded towards zero.
+ * @dev Returns the integer division of two unsigned integers.
+ * Reverts on division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
@@ -104,8 +112,8 @@ library SafeMath {
}
/**
- * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
- * division by zero. The result is rounded towards zero.
+ * @dev Returns the integer division of two unsigned integers.
+ * Reverts with custom message on division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
@@ -113,8 +121,6 @@ library SafeMath {
*
* Requirements:
* - The divisor cannot be zero.
- * NOTE: This is a feature of the next version of OpenZeppelin Contracts.
- * @dev Get it via `npm install @openzeppelin/contracts@next`.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
@@ -150,9 +156,6 @@ library SafeMath {
*
* Requirements:
* - The divisor cannot be zero.
- *
- * NOTE: This is a feature of the next version of OpenZeppelin Contracts.
- * @dev Get it via `npm install @openzeppelin/contracts@next`.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
diff --git a/migrations/.gitkeep b/migrations/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/networks/goerli-abi.json b/networks/goerli-abi.json
index 1694872a4..9c59dadc5 100644
--- a/networks/goerli-abi.json
+++ b/networks/goerli-abi.json
@@ -1,69 +1,124 @@
{
"ZRX": [
{
- "constant": true,
- "inputs": [],
- "name": "name",
- "outputs": [
+ "inputs": [
{
- "name": "",
+ "internalType": "uint256",
+ "name": "_initialAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "_tokenName",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "_decimalUnits",
+ "type": "uint8"
+ },
+ {
+ "internalType": "string",
+ "name": "_tokenSymbol",
"type": "string"
}
],
"payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x06fdde03"
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "_owner",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
+ "indexed": false,
+ "internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
- "name": "allocateTo",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x08bca566"
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "_spender",
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
"type": "address"
},
{
- "name": "_value",
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "approve",
- "outputs": [
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "name": "",
- "type": "bool"
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
}
],
+ "name": "allocateTo",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0x08bca566"
},
{
"constant": true,
- "inputs": [],
- "name": "totalSupply",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -71,27 +126,26 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x18160ddd"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
- "name": "_from",
- "type": "address"
- },
- {
- "name": "_to",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -99,7 +153,29 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x095ea7b3"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
},
{
"constant": true,
@@ -107,6 +183,7 @@
"name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
"type": "uint8"
}
@@ -120,10 +197,12 @@
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "_spender",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "_subtractedValue",
"type": "uint256"
}
@@ -131,6 +210,7 @@
"name": "decreaseApproval",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -141,24 +221,47 @@
"signature": "0x66188463"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "_owner",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_addedValue",
+ "type": "uint256"
}
],
- "name": "balanceOf",
+ "name": "increaseApproval",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xd73dd623"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x70a08231"
+ "signature": "0x06fdde03"
},
{
"constant": true,
@@ -166,6 +269,7 @@
"name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
"type": "string"
}
@@ -175,14 +279,32 @@
"type": "function",
"signature": "0x95d89b41"
},
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
+ },
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "_to",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "_value",
"type": "uint256"
}
@@ -190,6 +312,7 @@
"name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -203,17 +326,25 @@
"constant": false,
"inputs": [
{
- "name": "_spender",
+ "internalType": "address",
+ "name": "_from",
"type": "address"
},
{
- "name": "_addedValue",
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "increaseApproval",
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -221,49 +352,51 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xd73dd623"
- },
+ "signature": "0x23b872dd"
+ }
+ ],
+ "cUSDC": [
{
- "constant": true,
"inputs": [
{
- "name": "_owner",
+ "internalType": "address",
+ "name": "underlying_",
"type": "address"
},
{
- "name": "_spender",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
"type": "address"
- }
- ],
- "name": "allowance",
- "outputs": [
+ },
{
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xdd62ed3e"
- },
- {
- "inputs": [
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
{
- "name": "_initialAmount",
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
},
{
- "name": "_tokenName",
+ "internalType": "string",
+ "name": "name_",
"type": "string"
},
{
- "name": "_decimalUnits",
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
"type": "uint8"
},
{
- "name": "_tokenSymbol",
- "type": "string"
+ "internalType": "address payable",
+ "name": "admin_",
+ "type": "address"
}
],
"payable": false,
@@ -275,80 +408,8518 @@
"anonymous": false,
"inputs": [
{
- "indexed": true,
- "name": "owner",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
},
{
- "indexed": true,
- "name": "spender",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "interestAccumulated",
+ "type": "uint256"
},
{
"indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "borrowIndex",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "Approval",
+ "name": "AccrueInterest",
"type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
- "name": "from",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
"indexed": true,
- "name": "to",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
"indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "Transfer",
+ "name": "Approval",
"type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
- }
- ],
- "cUSDC": [
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
+ }
+ ],
+ "name": "Borrow",
+ "type": "event",
+ "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "LiquidateBorrow",
+ "type": "event",
+ "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "oldComptroller",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
+ }
+ ],
+ "name": "NewComptroller",
+ "type": "event",
+ "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "oldInterestRateModel",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
+ }
+ ],
+ "name": "NewMarketInterestRateModel",
+ "type": "event",
+ "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewReserveFactor",
+ "type": "event",
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "Redeem",
+ "type": "event",
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
+ }
+ ],
+ "name": "RepayBorrow",
+ "type": "event",
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "benefactor",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
+ }
+ ],
+ "name": "ReservesAdded",
+ "type": "event",
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "admin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
+ }
+ ],
+ "name": "ReservesReduced",
+ "type": "event",
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe9c714f2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_addReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3e941010"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_reduceReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x601a0bf1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
+ }
+ ],
+ "name": "_setComptroller",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4576b5db"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
+ }
+ ],
+ "name": "_setInterestRateModel",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf2b3abbd"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb71d1a0c"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setReserveFactor",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xfca7820b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "accrualBlockNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6c540baf"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "accrueInterest",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa6afed95"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address payable",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdd62ed3e"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x095ea7b3"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOfUnderlying",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3af9e669"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrow",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc5ebeaec"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "borrowBalanceCurrent",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x17bfdfbc"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "borrowBalanceStored",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95dd9193"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "borrowIndex",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xaa5af0fd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "borrowRatePerBlock",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf8f9da28"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptroller",
+ "outputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5fe3b567"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x313ce567"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "exchangeRateCurrent",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbd6d894d"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "exchangeRateStored",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x182df0f5"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountSnapshot",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xc37f68e2"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getCash",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x3b1d21a2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "underlying_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x1a31d465"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x99d8c1b4"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "interestRateModel",
+ "outputs": [
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf3fdb15a"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isCToken",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xfe9c44ae"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "contract CTokenInterface",
+ "name": "cTokenCollateral",
+ "type": "address"
+ }
+ ],
+ "name": "liquidateBorrow",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf5e3c462"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "mint",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa0712d68"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
+ {
+ "internalType": "address payable",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeem",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xdb006a75"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemUnderlying",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x852a12e3"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrow",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x0e752702"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrowBehalf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x2608f818"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "reserveFactorMantissa",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x173b9904"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "seize",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb2a02ff1"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "supplyRatePerBlock",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xae9d70b0"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x47bd3718"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "totalBorrowsCurrent",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x73acee98"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x8f840ddd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa9059cbb"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x23b872dd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "underlying",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6f307dc3"
+ }
+ ],
+ "PriceOracle": [
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "asset",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "previousPriceMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "requestedPriceMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newPriceMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "PricePosted",
+ "type": "event",
+ "signature": "0xdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae7"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "asset",
+ "type": "address"
+ }
+ ],
+ "name": "assetPrices",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5e9a523c"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "getUnderlyingPrice",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xfc57d4df"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isPriceOracle",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x66331bba"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "asset",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "price",
+ "type": "uint256"
+ }
+ ],
+ "name": "setDirectPrice",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x09a8acb0"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "underlyingPriceMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "setUnderlyingPrice",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x127ffda0"
+ }
+ ],
+ "PriceOracleProxy": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "v1PriceOracle_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cEthAddress_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cUsdcAddress_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cSaiAddress_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cDaiAddress_",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "cDaiAddress",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf2c65bf9"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "cEthAddress",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x2ed58e15"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "cSaiAddress",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x21b49128"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "cUsdcAddress",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xff11439b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptroller",
+ "outputs": [
+ {
+ "internalType": "contract Comptroller",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5fe3b567"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "getUnderlyingPrice",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xfc57d4df"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isPriceOracle",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x66331bba"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "makerUsdOracleKey",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xbc8a4ef4"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "v1PriceOracle",
+ "outputs": [
+ {
+ "internalType": "contract V1PriceOracleInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xfe10c98d"
+ }
+ ],
+ "Maximillion": [
+ {
+ "inputs": [
+ {
+ "internalType": "contract CEther",
+ "name": "cEther_",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "cEther",
+ "outputs": [
+ {
+ "internalType": "contract CEther",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x19b68c00"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ }
+ ],
+ "name": "repayBehalf",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0x9f35c3d5"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "contract CEther",
+ "name": "cEther_",
+ "type": "address"
+ }
+ ],
+ "name": "repayBehalfExplicit",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0x367b7f05"
+ }
+ ],
+ "CNT1": [
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "count",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06661abd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "count2",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x1d63e24d"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "decrement",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0x3a9ebefd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "doRevert",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function",
+ "signature": "0xafc874d2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "increment",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0x7cf5dab0"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount2",
+ "type": "uint256"
+ }
+ ],
+ "name": "increment",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0x924ba506"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "notZero",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x19a50d4a"
+ }
+ ],
+ "GovernorAlpha": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_timelock",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_comp",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_guardian",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "description",
+ "type": "string"
+ }
+ ],
+ "name": "NewProposal",
+ "type": "event",
+ "signature": "0xa9ef596c73fbcfb4a78bc139b1a19c35247c1f37d2489c0513ad2dd3eb7d8c6b"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ }
+ ],
+ "name": "ProposalCanceled",
+ "type": "event",
+ "signature": "0x789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "ProposalExecuted",
+ "type": "event",
+ "signature": "0xf758fc91e01b00ea6b4a6138756f7f28e021f9bf21db6dbf8c36c88eb737257a"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "ProposalQueued",
+ "type": "event",
+ "signature": "0x9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "support",
+ "type": "bool"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "votes",
+ "type": "uint256"
+ }
+ ],
+ "name": "VoteCast",
+ "type": "event",
+ "signature": "0xee358b70feb31defabe34f41b973e45e9d6d5742b67e164e6d15ad5c5ae606e4"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "__abdicate",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x760fbc13"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "__acceptAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb9a61961"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "__executeSetTimelockPendingAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x21f43e42"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "__queueSetTimelockPendingAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x91500671"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "cancel",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x40e58ee5"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "support",
+ "type": "bool"
+ }
+ ],
+ "name": "castVote",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x15373e3d"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comp",
+ "outputs": [
+ {
+ "internalType": "contract CompInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x109d0af8"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "execute",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0xfe0d94c1"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "getProposalFunctionData",
+ "outputs": [
+ {
+ "internalType": "address[]",
+ "name": "targets",
+ "type": "address[]"
+ },
+ {
+ "internalType": "uint256[]",
+ "name": "values",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "string[]",
+ "name": "signatures",
+ "type": "string[]"
+ },
+ {
+ "internalType": "bytes[]",
+ "name": "calldatas",
+ "type": "bytes[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6adfc1cf"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "guardian",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x452a9320"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "voter",
+ "type": "address"
+ }
+ ],
+ "name": "hasVoted",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x43859632"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "latestProposalIds",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x17977c61"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "proposalCount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xda35c664"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "proposalThreshold",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xb58131b0"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "proposals",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "proposer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "startBlock",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "endBlock",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "forVotes",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "againstVotes",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "canceled",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "executed",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x013cf08b"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "targets",
+ "type": "address[]"
+ },
+ {
+ "internalType": "uint256[]",
+ "name": "values",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "string[]",
+ "name": "signatures",
+ "type": "string[]"
+ },
+ {
+ "internalType": "bytes[]",
+ "name": "calldatas",
+ "type": "bytes[]"
+ },
+ {
+ "internalType": "string",
+ "name": "description",
+ "type": "string"
+ }
+ ],
+ "name": "propose",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xda95691a"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "queue",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xddf0b009"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "quorumVotes",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x24bc1a64"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "state",
+ "outputs": [
+ {
+ "internalType": "enum GovernorAlpha.ProposalState",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x3e4f49e6"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "timelock",
+ "outputs": [
+ {
+ "internalType": "contract TimelockInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xd33219b4"
+ }
+ ],
+ "cDAI": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "underlying_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
+ },
+ {
+ "internalType": "address payable",
+ "name": "admin_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "implementation_",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "becomeImplementationData",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "interestAccumulated",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowIndex",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
+ }
+ ],
+ "name": "AccrueInterest",
+ "type": "event",
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
+ }
+ ],
+ "name": "Borrow",
+ "type": "event",
+ "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "LiquidateBorrow",
+ "type": "event",
+ "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "oldComptroller",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
+ }
+ ],
+ "name": "NewComptroller",
+ "type": "event",
+ "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldImplementation",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "NewImplementation",
+ "type": "event",
+ "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "oldInterestRateModel",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
+ }
+ ],
+ "name": "NewMarketInterestRateModel",
+ "type": "event",
+ "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewReserveFactor",
+ "type": "event",
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "Redeem",
+ "type": "event",
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
+ }
+ ],
+ "name": "RepayBorrow",
+ "type": "event",
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "benefactor",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
+ }
+ ],
+ "name": "ReservesAdded",
+ "type": "event",
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "admin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
+ }
+ ],
+ "name": "ReservesReduced",
+ "type": "event",
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe9c714f2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_addReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3e941010"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_reduceReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x601a0bf1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
+ }
+ ],
+ "name": "_setComptroller",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4576b5db"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "implementation_",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "allowResign",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "becomeImplementationData",
+ "type": "bytes"
+ }
+ ],
+ "name": "_setImplementation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x555bcc40"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
+ }
+ ],
+ "name": "_setInterestRateModel",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf2b3abbd"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb71d1a0c"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setReserveFactor",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xfca7820b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "accrualBlockNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6c540baf"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "accrueInterest",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa6afed95"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address payable",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdd62ed3e"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x095ea7b3"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOfUnderlying",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3af9e669"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrow",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc5ebeaec"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "borrowBalanceCurrent",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x17bfdfbc"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "borrowBalanceStored",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95dd9193"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "borrowIndex",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xaa5af0fd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "borrowRatePerBlock",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf8f9da28"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptroller",
+ "outputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5fe3b567"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x313ce567"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "delegateToImplementation",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x0933c1ed"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "delegateToViewImplementation",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x4487152f"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "exchangeRateCurrent",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbd6d894d"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "exchangeRateStored",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x182df0f5"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountSnapshot",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xc37f68e2"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getCash",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x3b1d21a2"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "implementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5c60da1b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "interestRateModel",
+ "outputs": [
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf3fdb15a"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isCToken",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xfe9c44ae"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "contract CTokenInterface",
+ "name": "cTokenCollateral",
+ "type": "address"
+ }
+ ],
+ "name": "liquidateBorrow",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf5e3c462"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "mint",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa0712d68"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
+ {
+ "internalType": "address payable",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeem",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xdb006a75"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemUnderlying",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x852a12e3"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrow",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x0e752702"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrowBehalf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x2608f818"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "reserveFactorMantissa",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x173b9904"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "seize",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb2a02ff1"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "supplyRatePerBlock",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xae9d70b0"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x47bd3718"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "totalBorrowsCurrent",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x73acee98"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x8f840ddd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa9059cbb"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x23b872dd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "underlying",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6f307dc3"
+ }
+ ],
+ "GovernorAlpha2": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "timelock_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "comp_",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "guardian_",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "description",
+ "type": "string"
+ }
+ ],
+ "name": "NewProposal",
+ "type": "event",
+ "signature": "0xa9ef596c73fbcfb4a78bc139b1a19c35247c1f37d2489c0513ad2dd3eb7d8c6b"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ }
+ ],
+ "name": "ProposalCanceled",
+ "type": "event",
+ "signature": "0x789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "ProposalExecuted",
+ "type": "event",
+ "signature": "0xf758fc91e01b00ea6b4a6138756f7f28e021f9bf21db6dbf8c36c88eb737257a"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "ProposalQueued",
+ "type": "event",
+ "signature": "0x9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "support",
+ "type": "bool"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "votes",
+ "type": "uint256"
+ }
+ ],
+ "name": "VoteCast",
+ "type": "event",
+ "signature": "0xee358b70feb31defabe34f41b973e45e9d6d5742b67e164e6d15ad5c5ae606e4"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "BALLOT_TYPEHASH",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdeaaa7cc"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "DOMAIN_TYPEHASH",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x20606b70"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "__abdicate",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x760fbc13"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "__acceptAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb9a61961"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "__executeSetTimelockPendingAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x21f43e42"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "__queueSetTimelockPendingAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x91500671"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "cancel",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x40e58ee5"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "support",
+ "type": "bool"
+ }
+ ],
+ "name": "castVote",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x15373e3d"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "support",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "castVoteBySig",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4634c61f"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comp",
+ "outputs": [
+ {
+ "internalType": "contract CompInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x109d0af8"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "execute",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0xfe0d94c1"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "getProposalFunctionData",
+ "outputs": [
+ {
+ "internalType": "address[]",
+ "name": "targets",
+ "type": "address[]"
+ },
+ {
+ "internalType": "uint256[]",
+ "name": "values",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "string[]",
+ "name": "signatures",
+ "type": "string[]"
+ },
+ {
+ "internalType": "bytes[]",
+ "name": "calldatas",
+ "type": "bytes[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6adfc1cf"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "voter",
+ "type": "address"
+ }
+ ],
+ "name": "getReceipt",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bool",
+ "name": "hasVoted",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "support",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint96",
+ "name": "votes",
+ "type": "uint96"
+ }
+ ],
+ "internalType": "struct GovernorAlpha.Receipt",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xe23a9a52"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "guardian",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x452a9320"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "latestProposalIds",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x17977c61"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "proposalCount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xda35c664"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "proposalThreshold",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function",
+ "signature": "0xb58131b0"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "proposals",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "id",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "proposer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "startBlock",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "endBlock",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "forVotes",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "againstVotes",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "canceled",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "executed",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x013cf08b"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "targets",
+ "type": "address[]"
+ },
+ {
+ "internalType": "uint256[]",
+ "name": "values",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "string[]",
+ "name": "signatures",
+ "type": "string[]"
+ },
+ {
+ "internalType": "bytes[]",
+ "name": "calldatas",
+ "type": "bytes[]"
+ },
+ {
+ "internalType": "string",
+ "name": "description",
+ "type": "string"
+ }
+ ],
+ "name": "propose",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xda95691a"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "queue",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xddf0b009"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "quorumVotes",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function",
+ "signature": "0x24bc1a64"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "proposalId",
+ "type": "uint256"
+ }
+ ],
+ "name": "state",
+ "outputs": [
+ {
+ "internalType": "enum GovernorAlpha.ProposalState",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x3e4f49e6"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "timelock",
+ "outputs": [
+ {
+ "internalType": "contract TimelockInterface",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xd33219b4"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "votingDelay",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function",
+ "signature": "0x3932abb1"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "votingPeriod",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function",
+ "signature": "0x02a251a3"
+ }
+ ],
+ "DAI": [
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "_initialAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "_tokenName",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "_decimalUnits",
+ "type": "uint8"
+ },
+ {
+ "internalType": "string",
+ "name": "_tokenSymbol",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "allocateTo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x08bca566"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdd62ed3e"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x095ea7b3"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x313ce567"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_subtractedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "decreaseApproval",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x66188463"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_addedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "increaseApproval",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xd73dd623"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa9059cbb"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x23b872dd"
+ }
+ ],
+ "StdComptroller": [
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "action",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "pauseState",
+ "type": "bool"
+ }
+ ],
+ "name": "ActionPaused",
+ "type": "event",
+ "signature": "0xef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "MarketEntered",
+ "type": "event",
+ "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "MarketExited",
+ "type": "event",
+ "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "MarketListed",
+ "type": "event",
+ "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldCloseFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewCloseFactor",
+ "type": "event",
+ "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldCollateralFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewCollateralFactor",
+ "type": "event",
+ "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldLiquidationIncentiveMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewLiquidationIncentive",
+ "type": "event",
+ "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldMaxAssets",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newMaxAssets",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewMaxAssets",
+ "type": "event",
+ "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPauseGuardian",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPauseGuardian",
+ "type": "address"
+ }
+ ],
+ "name": "NewPauseGuardian",
+ "type": "event",
+ "signature": "0x0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "oldPriceOracle",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "newPriceOracle",
+ "type": "address"
+ }
+ ],
+ "name": "NewPriceOracle",
+ "type": "event",
+ "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract Unitroller",
+ "name": "unitroller",
+ "type": "address"
+ }
+ ],
+ "name": "_become",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x1d504dc6"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
+ }
+ ],
+ "name": "_setBorrowPaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x56133fc8"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setCloseFactor",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x317b0b77"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setCollateralFactor",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe4028eee"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setLiquidationIncentive",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4fd42e17"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newMaxAssets",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setMaxAssets",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xd9226ced"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
+ }
+ ],
+ "name": "_setMintPaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x9845f280"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPauseGuardian",
+ "type": "address"
+ }
+ ],
+ "name": "_setPauseGuardian",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x5f5af1aa"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract PriceOracle",
+ "name": "newOracle",
+ "type": "address"
+ }
+ ],
+ "name": "_setPriceOracle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x55ee1fe1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
+ }
+ ],
+ "name": "_setSeizePaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x2d70db78"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
+ }
+ ],
+ "name": "_setTransferPaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x8ebf6364"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "_supportMarket",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa76b3fda"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "accountAssets",
+ "outputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdce15449"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrowAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xda3d454c"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "borrowGuardianPaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x9530f644"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrowVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x5c778605"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "checkMembership",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x929fe9a1"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "closeFactorMantissa",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xe8755446"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xbb82aa5e"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "cTokens",
+ "type": "address[]"
+ }
+ ],
+ "name": "enterMarkets",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "",
+ "type": "uint256[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc2998238"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenAddress",
+ "type": "address"
+ }
+ ],
+ "name": "exitMarket",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xede4edd0"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountLiquidity",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5ec88c79"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAssetsIn",
+ "outputs": [
+ {
+ "internalType": "contract CToken[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xabfceffc"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isComptroller",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x007e3dd2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "liquidateBorrowAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x5fc7e71e"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "actualRepayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "liquidateBorrowVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x47ef3b3b"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "actualRepayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "liquidateCalculateSeizeTokens",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xc488847b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "liquidationIncentiveMantissa",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x4ada90af"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "markets",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "isListed",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "collateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x8e8f294b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "maxAssets",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x94b2294b"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "mintAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4ef4c3e1"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "mintGuardianPaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5dce0515"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "actualMintAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "mintVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x41c728b9"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "oracle",
+ "outputs": [
+ {
+ "internalType": "contract PriceOracle",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x7dc0d1d0"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pauseGuardian",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x24a3d622"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingComptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdcfbc0c7"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xeabe7d91"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x51dff989"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrowAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x24008a62"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "actualRepayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowerIndex",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrowVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x1ededc91"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "seizeAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xd02f7351"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "seizeGuardianPaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xac0b0bb7"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "seizeVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x6d35bf91"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "transferTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbdcdc258"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "transferGuardianPaused",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x87f76303"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "transferTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x6a56947e"
+ }
+ ],
+ "Unitroller": [
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldImplementation",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "NewImplementation",
+ "type": "event",
+ "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingImplementation",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingImplementation",
+ "type": "event",
+ "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe9c714f2"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptImplementation",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc1e80334"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb71d1a0c"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingImplementation",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe992a041"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xbb82aa5e"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingComptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdcfbc0c7"
+ }
+ ],
+ "Comptroller": [
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldImplementation",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "NewImplementation",
+ "type": "event",
+ "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingImplementation",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingImplementation",
+ "type": "event",
+ "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe9c714f2"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptImplementation",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc1e80334"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb71d1a0c"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newPendingImplementation",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingImplementation",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe992a041"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xbb82aa5e"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingComptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdcfbc0c7"
+ },
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "MarketEntered",
+ "type": "event",
+ "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "MarketExited",
+ "type": "event",
+ "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "MarketListed",
+ "type": "event",
+ "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldCloseFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewCloseFactor",
+ "type": "event",
+ "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldCollateralFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewCollateralFactor",
+ "type": "event",
+ "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldLiquidationIncentiveMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewLiquidationIncentive",
+ "type": "event",
+ "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldMaxAssets",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newMaxAssets",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewMaxAssets",
+ "type": "event",
+ "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "oldPriceOracle",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "newPriceOracle",
+ "type": "address"
+ }
+ ],
+ "name": "NewPriceOracle",
+ "type": "event",
+ "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract Unitroller",
+ "name": "unitroller",
+ "type": "address"
+ },
+ {
+ "internalType": "contract PriceOracle",
+ "name": "_oracle",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_closeFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_maxAssets",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "reinitializing",
+ "type": "bool"
+ }
+ ],
+ "name": "_become",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x32000e00"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setCloseFactor",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x317b0b77"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setCollateralFactor",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe4028eee"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setLiquidationIncentive",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4fd42e17"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newMaxAssets",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setMaxAssets",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xd9226ced"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract PriceOracle",
+ "name": "newOracle",
+ "type": "address"
+ }
+ ],
+ "name": "_setPriceOracle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x55ee1fe1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "_supportMarket",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa76b3fda"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "accountAssets",
+ "outputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdce15449"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrowAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xda3d454c"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrowVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x5c778605"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "checkMembership",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x929fe9a1"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "closeFactorMantissa",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xe8755446"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xbb82aa5e"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "cTokens",
+ "type": "address[]"
+ }
+ ],
+ "name": "enterMarkets",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "",
+ "type": "uint256[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc2998238"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenAddress",
+ "type": "address"
+ }
+ ],
+ "name": "exitMarket",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xede4edd0"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountLiquidity",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5ec88c79"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAssetsIn",
+ "outputs": [
+ {
+ "internalType": "contract CToken[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xabfceffc"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isComptroller",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x007e3dd2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "liquidateBorrowAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x5fc7e71e"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "liquidateBorrowVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x47ef3b3b"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "liquidateCalculateSeizeTokens",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xc488847b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "liquidationIncentiveMantissa",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x4ada90af"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "markets",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "isListed",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "collateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x8e8f294b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "maxAssets",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x94b2294b"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "mintAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4ef4c3e1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "mintVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x41c728b9"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "oracle",
+ "outputs": [
+ {
+ "internalType": "contract PriceOracle",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x7dc0d1d0"
+ },
{
"constant": true,
"inputs": [],
- "name": "name",
+ "name": "pendingAdmin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingComptrollerImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdcfbc0c7"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xeabe7d91"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x51dff989"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrowAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x24008a62"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowerIndex",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrowVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x1ededc91"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "seizeAllowed",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xd02f7351"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "seizeVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x6d35bf91"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "transferTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferAllowed",
"outputs": [
{
- "name": "",
- "type": "string"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbdcdc258"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "transferTokens",
+ "type": "uint256"
}
],
+ "name": "transferVerify",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x06fdde03"
+ "signature": "0x6a56947e"
},
{
- "constant": false,
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
"inputs": [
{
- "name": "spender",
+ "indexed": false,
+ "internalType": "string",
+ "name": "action",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "pauseState",
+ "type": "bool"
+ }
+ ],
+ "name": "ActionPaused",
+ "type": "event",
+ "signature": "0xef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
},
{
- "name": "amount",
+ "indexed": false,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "MarketEntered",
+ "type": "event",
+ "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "MarketExited",
+ "type": "event",
+ "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "MarketListed",
+ "type": "event",
+ "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldCloseFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
"type": "uint256"
}
],
- "name": "approve",
+ "name": "NewCloseFactor",
+ "type": "event",
+ "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldCollateralFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewCollateralFactor",
+ "type": "event",
+ "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldLiquidationIncentiveMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewLiquidationIncentive",
+ "type": "event",
+ "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldMaxAssets",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newMaxAssets",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewMaxAssets",
+ "type": "event",
+ "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPauseGuardian",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPauseGuardian",
+ "type": "address"
+ }
+ ],
+ "name": "NewPauseGuardian",
+ "type": "event",
+ "signature": "0x0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "oldPriceOracle",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "newPriceOracle",
+ "type": "address"
+ }
+ ],
+ "name": "NewPriceOracle",
+ "type": "event",
+ "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract Unitroller",
+ "name": "unitroller",
+ "type": "address"
+ }
+ ],
+ "name": "_become",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x1d504dc6"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
+ }
+ ],
+ "name": "_setBorrowPaused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -356,19 +8927,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0x56133fc8"
},
{
"constant": false,
"inputs": [
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
"type": "uint256"
}
],
- "name": "repayBorrow",
+ "name": "_setCloseFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -376,34 +8949,48 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x0e752702"
+ "signature": "0x317b0b77"
},
{
- "constant": true,
- "inputs": [],
- "name": "reserveFactorMantissa",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setCollateralFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x173b9904"
+ "signature": "0xe4028eee"
},
{
"constant": false,
"inputs": [
{
- "name": "account",
- "type": "address"
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
}
],
- "name": "borrowBalanceCurrent",
+ "name": "_setLiquidationIncentive",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -411,57 +8998,43 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x17bfdfbc"
+ "signature": "0x4fd42e17"
},
{
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "uint256",
+ "name": "newMaxAssets",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x18160ddd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "exchangeRateStored",
+ "name": "_setMaxAssets",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x182df0f5"
+ "signature": "0xd9226ced"
},
{
"constant": false,
"inputs": [
{
- "name": "src",
- "type": "address"
- },
- {
- "name": "dst",
- "type": "address"
- },
- {
- "name": "amount",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
}
],
- "name": "transferFrom",
+ "name": "_setMintPaused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -469,23 +9042,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x9845f280"
},
{
"constant": false,
"inputs": [
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "newPauseGuardian",
"type": "address"
- },
- {
- "name": "repayAmount",
- "type": "uint256"
}
],
- "name": "repayBorrowBehalf",
+ "name": "_setPauseGuardian",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -493,84 +9064,87 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x2608f818"
+ "signature": "0x5f5af1aa"
},
{
- "constant": true,
- "inputs": [],
- "name": "pendingAdmin",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "contract PriceOracle",
+ "name": "newOracle",
"type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x26782247"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "decimals",
+ "name": "_setPriceOracle",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x313ce567"
+ "signature": "0x55ee1fe1"
},
{
"constant": false,
"inputs": [
{
- "name": "owner",
- "type": "address"
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
}
],
- "name": "balanceOfUnderlying",
+ "name": "_setSeizePaused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x3af9e669"
+ "signature": "0x2d70db78"
},
{
- "constant": true,
- "inputs": [],
- "name": "getCash",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "state",
+ "type": "bool"
+ }
+ ],
+ "name": "_setTransferPaused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x3b1d21a2"
+ "signature": "0x8ebf6364"
},
{
"constant": false,
"inputs": [
{
- "name": "newComptroller",
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
}
],
- "name": "_setComptroller",
+ "name": "_supportMarket",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -578,29 +9152,42 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x4576b5db"
+ "signature": "0xa76b3fda"
},
{
"constant": true,
- "inputs": [],
- "name": "totalBorrows",
- "outputs": [
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
+ "name": "accountAssets",
+ "outputs": [
+ {
+ "internalType": "contract CToken",
+ "name": "",
+ "type": "address"
+ }
+ ],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x47bd3718"
+ "signature": "0xdce15449"
},
{
"constant": true,
"inputs": [],
- "name": "comptroller",
+ "name": "admin",
"outputs": [
{
+ "internalType": "address",
"name": "",
"type": "address"
}
@@ -608,19 +9195,31 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x5fe3b567"
+ "signature": "0xf851a440"
},
{
"constant": false,
"inputs": [
{
- "name": "reduceAmount",
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
"type": "uint256"
}
],
- "name": "_reduceReserves",
+ "name": "borrowAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -628,64 +9227,84 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x601a0bf1"
+ "signature": "0xda3d454c"
},
{
"constant": true,
"inputs": [],
- "name": "initialExchangeRateMantissa",
+ "name": "borrowGuardianPaused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x675d972c"
+ "signature": "0x9530f644"
},
{
- "constant": true,
- "inputs": [],
- "name": "accrualBlockNumber",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
"type": "uint256"
}
],
+ "name": "borrowVerify",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x6c540baf"
+ "signature": "0x5c778605"
},
{
"constant": true,
- "inputs": [],
- "name": "underlying",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "contract CToken",
+ "name": "cToken",
+ "type": "address"
+ }
+ ],
+ "name": "checkMembership",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "address"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x6f307dc3"
+ "signature": "0x929fe9a1"
},
{
"constant": true,
- "inputs": [
- {
- "name": "owner",
- "type": "address"
- }
- ],
- "name": "balanceOf",
+ "inputs": [],
+ "name": "closeFactorMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -693,104 +9312,171 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x70a08231"
+ "signature": "0xe8755446"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "totalBorrowsCurrent",
+ "name": "comptrollerImplementation",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x73acee98"
+ "signature": "0xbb82aa5e"
},
{
"constant": false,
"inputs": [
{
- "name": "redeemAmount",
- "type": "uint256"
+ "internalType": "address[]",
+ "name": "cTokens",
+ "type": "address[]"
}
],
- "name": "redeemUnderlying",
+ "name": "enterMarkets",
"outputs": [
{
+ "internalType": "uint256[]",
"name": "",
- "type": "uint256"
+ "type": "uint256[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x852a12e3"
+ "signature": "0xc2998238"
},
{
- "constant": true,
- "inputs": [],
- "name": "totalReserves",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cTokenAddress",
+ "type": "address"
+ }
+ ],
+ "name": "exitMarket",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x8f840ddd"
+ "signature": "0xede4edd0"
},
{
"constant": true,
- "inputs": [],
- "name": "symbol",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountLiquidity",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x5ec88c79"
},
{
"constant": true,
"inputs": [
{
+ "internalType": "address",
"name": "account",
"type": "address"
}
],
- "name": "borrowBalanceStored",
+ "name": "getAssetsIn",
+ "outputs": [
+ {
+ "internalType": "contract CToken[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xabfceffc"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isComptroller",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95dd9193"
+ "signature": "0x007e3dd2"
},
{
"constant": false,
"inputs": [
{
- "name": "mintAmount",
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
}
],
- "name": "mint",
+ "name": "liquidateBorrowAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -798,53 +9484,77 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa0712d68"
+ "signature": "0x5fc7e71e"
},
{
"constant": false,
- "inputs": [],
- "name": "accrueInterest",
- "outputs": [
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "actualRepayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
+ "name": "liquidateBorrowVerify",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa6afed95"
+ "signature": "0x47ef3b3b"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "dst",
+ "internalType": "address",
+ "name": "cTokenBorrowed",
"type": "address"
},
{
- "name": "amount",
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "actualRepayAmount",
"type": "uint256"
}
],
- "name": "transfer",
+ "name": "liquidateCalculateSeizeTokens",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xa9059cbb"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "borrowIndex",
- "outputs": [
+ "type": "uint256"
+ },
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -852,14 +9562,15 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xaa5af0fd"
+ "signature": "0xc488847b"
},
{
"constant": true,
"inputs": [],
- "name": "supplyRatePerBlock",
+ "name": "liquidationIncentiveMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -867,47 +9578,74 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xae9d70b0"
+ "signature": "0x4ada90af"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "liquidator",
+ "internalType": "address",
+ "name": "",
"type": "address"
- },
+ }
+ ],
+ "name": "markets",
+ "outputs": [
{
- "name": "borrower",
- "type": "address"
+ "internalType": "bool",
+ "name": "isListed",
+ "type": "bool"
},
{
- "name": "seizeTokens",
+ "internalType": "uint256",
+ "name": "collateralFactorMantissa",
"type": "uint256"
}
],
- "name": "seize",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x8e8f294b"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "maxAssets",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xb2a02ff1"
+ "signature": "0x94b2294b"
},
{
"constant": false,
"inputs": [
{
- "name": "newPendingAdmin",
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "minter",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
}
],
- "name": "_setPendingAdmin",
+ "name": "mintAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -915,125 +9653,142 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0x4ef4c3e1"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "exchangeRateCurrent",
+ "name": "mintGuardianPaused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xbd6d894d"
+ "signature": "0x5dce0515"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "cToken",
"type": "address"
- }
- ],
- "name": "getAccountSnapshot",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
},
{
- "name": "",
- "type": "uint256"
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
},
{
- "name": "",
+ "internalType": "uint256",
+ "name": "actualMintAmount",
"type": "uint256"
},
{
- "name": "",
+ "internalType": "uint256",
+ "name": "mintTokens",
"type": "uint256"
}
],
+ "name": "mintVerify",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc37f68e2"
+ "signature": "0x41c728b9"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "borrowAmount",
- "type": "uint256"
- }
- ],
- "name": "borrow",
+ "constant": true,
+ "inputs": [],
+ "name": "oracle",
"outputs": [
{
+ "internalType": "contract PriceOracle",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xc5ebeaec"
+ "signature": "0x7dc0d1d0"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "redeemTokens",
- "type": "uint256"
- }
- ],
- "name": "redeem",
+ "constant": true,
+ "inputs": [],
+ "name": "pauseGuardian",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xdb006a75"
+ "signature": "0x24a3d622"
},
{
"constant": true,
- "inputs": [
- {
- "name": "owner",
- "type": "address"
- },
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
{
- "name": "spender",
+ "internalType": "address",
+ "name": "",
"type": "address"
}
],
- "name": "allowance",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingComptrollerImplementation",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0xdcfbc0c7"
},
{
"constant": false,
- "inputs": [],
- "name": "_acceptAdmin",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -1041,62 +9796,67 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0xeabe7d91"
},
{
"constant": false,
"inputs": [
{
- "name": "newInterestRateModel",
+ "internalType": "address",
+ "name": "cToken",
"type": "address"
- }
- ],
- "name": "_setInterestRateModel",
- "outputs": [
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
{
- "name": "",
+ "internalType": "uint256",
+ "name": "redeemTokens",
"type": "uint256"
}
],
+ "name": "redeemVerify",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf2b3abbd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "interestRateModel",
- "outputs": [
- {
- "name": "",
- "type": "address"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf3fdb15a"
+ "signature": "0x51dff989"
},
{
"constant": false,
"inputs": [
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "cToken",
"type": "address"
},
{
- "name": "repayAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
},
{
- "name": "cTokenCollateral",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
}
],
- "name": "liquidateBorrow",
+ "name": "repayBorrowAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -1104,49 +9864,77 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf5e3c462"
+ "signature": "0x24008a62"
},
{
- "constant": true,
- "inputs": [],
- "name": "admin",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "cToken",
"type": "address"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf851a440"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "borrowRatePerBlock",
- "outputs": [
+ },
{
- "name": "",
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "actualRepayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowerIndex",
"type": "uint256"
}
],
+ "name": "repayBorrowVerify",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf8f9da28"
+ "signature": "0x1ededc91"
},
{
"constant": false,
"inputs": [
{
- "name": "newReserveFactorMantissa",
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "cTokenBorrowed",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "name": "_setReserveFactor",
+ "name": "seizeAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -1154,14 +9942,15 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xfca7820b"
+ "signature": "0xd02f7351"
},
{
"constant": true,
"inputs": [],
- "name": "isCToken",
+ "name": "seizeGuardianPaused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -1169,456 +9958,522 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xfe9c44ae"
+ "signature": "0xac0b0bb7"
},
{
+ "constant": false,
"inputs": [
{
- "name": "underlying_",
+ "internalType": "address",
+ "name": "cTokenCollateral",
"type": "address"
},
{
- "name": "comptroller_",
+ "internalType": "address",
+ "name": "cTokenBorrowed",
"type": "address"
},
{
- "name": "interestRateModel_",
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "initialExchangeRateMantissa_",
- "type": "uint256"
- },
- {
- "name": "name_",
- "type": "string"
- },
- {
- "name": "symbol_",
- "type": "string"
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
},
{
- "name": "decimals_",
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
+ "name": "seizeVerify",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
+ "type": "function",
+ "signature": "0x6d35bf91"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "interestAccumulated",
- "type": "uint256"
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
},
{
- "indexed": false,
- "name": "borrowIndex",
- "type": "uint256"
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
},
{
- "indexed": false,
- "name": "totalBorrows",
- "type": "uint256"
- }
- ],
- "name": "AccrueInterest",
- "type": "event",
- "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "minter",
+ "internalType": "address",
+ "name": "dst",
"type": "address"
},
{
- "indexed": false,
- "name": "mintAmount",
+ "internalType": "uint256",
+ "name": "transferTokens",
"type": "uint256"
- },
+ }
+ ],
+ "name": "transferAllowed",
+ "outputs": [
{
- "indexed": false,
- "name": "mintTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Mint",
- "type": "event",
- "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbdcdc258"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "redeemer",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "redeemAmount",
- "type": "uint256"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "transferGuardianPaused",
+ "outputs": [
{
- "indexed": false,
- "name": "redeemTokens",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
- "name": "Redeem",
- "type": "event",
- "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x87f76303"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "borrower",
+ "internalType": "address",
+ "name": "cToken",
"type": "address"
},
{
- "indexed": false,
- "name": "borrowAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
},
{
- "indexed": false,
- "name": "accountBorrows",
- "type": "uint256"
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
},
{
- "indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "transferTokens",
"type": "uint256"
}
],
- "name": "Borrow",
- "type": "event",
- "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
- },
+ "name": "transferVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x6a56947e"
+ }
+ ],
+ "Comp": [
{
- "anonymous": false,
"inputs": [
- {
- "indexed": false,
- "name": "payer",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrower",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "repayAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "accountBorrows",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "totalBorrows",
- "type": "uint256"
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
}
],
- "name": "RepayBorrow",
- "type": "event",
- "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "liquidator",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrower",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "indexed": false,
- "name": "repayAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "cTokenCollateral",
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
"indexed": false,
- "name": "seizeTokens",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "LiquidateBorrow",
+ "name": "Approval",
"type": "event",
- "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "oldPendingAdmin",
+ "indexed": true,
+ "internalType": "address",
+ "name": "delegator",
"type": "address"
},
{
- "indexed": false,
- "name": "newPendingAdmin",
+ "indexed": true,
+ "internalType": "address",
+ "name": "fromDelegate",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "toDelegate",
"type": "address"
}
],
- "name": "NewPendingAdmin",
+ "name": "DelegateChanged",
"type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "signature": "0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "oldAdmin",
+ "indexed": true,
+ "internalType": "address",
+ "name": "delegate",
"type": "address"
},
{
"indexed": false,
- "name": "newAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "previousBalance",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newBalance",
+ "type": "uint256"
}
],
- "name": "NewAdmin",
+ "name": "DelegateVotesChanged",
"type": "event",
- "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ "signature": "0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "oldComptroller",
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
"type": "address"
},
{
- "indexed": false,
- "name": "newComptroller",
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
"type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "name": "NewComptroller",
+ "name": "Transfer",
"type": "event",
- "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "DELEGATION_TYPEHASH",
+ "outputs": [
{
- "indexed": false,
- "name": "oldInterestRateModel",
- "type": "address"
- },
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xe7a324dc"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "DOMAIN_TYPEHASH",
+ "outputs": [
{
- "indexed": false,
- "name": "newInterestRateModel",
- "type": "address"
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
}
],
- "name": "NewMarketInterestRateModel",
- "type": "event",
- "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x20606b70"
},
{
- "anonymous": false,
+ "constant": true,
"inputs": [
{
- "indexed": false,
- "name": "oldReserveFactorMantissa",
- "type": "uint256"
+ "internalType": "address",
+ "name": "",
+ "type": "address"
},
{
- "indexed": false,
- "name": "newReserveFactorMantissa",
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "NewReserveFactor",
- "type": "event",
- "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdd62ed3e"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "admin",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
- "indexed": false,
- "name": "reduceAmount",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "approve",
+ "outputs": [
{
- "indexed": false,
- "name": "newTotalReserves",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
- "name": "ReservesReduced",
- "type": "event",
- "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x095ea7b3"
},
{
- "anonymous": false,
+ "constant": true,
"inputs": [
{
- "indexed": false,
- "name": "error",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "info",
- "type": "uint256"
- },
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
{
- "indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
},
{
- "anonymous": false,
+ "constant": true,
"inputs": [
{
- "indexed": true,
- "name": "from",
+ "internalType": "address",
+ "name": "",
"type": "address"
},
{
- "indexed": true,
- "name": "to",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "checkpoints",
+ "outputs": [
+ {
+ "internalType": "uint32",
+ "name": "fromBlock",
+ "type": "uint32"
},
{
- "indexed": false,
- "name": "amount",
- "type": "uint256"
+ "internalType": "uint96",
+ "name": "votes",
+ "type": "uint96"
}
],
- "name": "Transfer",
- "type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x0cdfebfa"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
{
- "indexed": true,
- "name": "owner",
- "type": "address"
- },
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x313ce567"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "indexed": true,
- "name": "spender",
+ "internalType": "address",
+ "name": "delegatee",
"type": "address"
- },
- {
- "indexed": false,
- "name": "amount",
- "type": "uint256"
}
],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- }
- ],
- "PriceOracle": [
+ "name": "delegate",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x5c19a95c"
+ },
{
"constant": false,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "delegatee",
"type": "address"
},
{
- "name": "underlyingPriceMantissa",
+ "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": "setUnderlyingPrice",
+ "name": "delegateBySig",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x127ffda0"
+ "signature": "0xc3cda520"
},
{
"constant": true,
"inputs": [
{
- "name": "asset",
+ "internalType": "address",
+ "name": "",
"type": "address"
}
],
- "name": "assetPrices",
+ "name": "delegates",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x5e9a523c"
+ "signature": "0x587cde1e"
},
{
"constant": true,
- "inputs": [],
- "name": "isPriceOracle",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getCurrentVotes",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x66331bba"
+ "signature": "0xb4b5ea57"
},
{
"constant": true,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "account",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "blockNumber",
+ "type": "uint256"
}
],
- "name": "getUnderlyingPrice",
+ "name": "getPriorVotes",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -1626,557 +10481,638 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xfc57d4df"
- }
- ],
- "PriceOracleProxy": [
+ "signature": "0x782d6fe1"
+ },
{
"constant": true,
"inputs": [],
- "name": "comptroller",
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "address"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x5fe3b567"
+ "signature": "0x06fdde03"
},
{
"constant": true,
- "inputs": [],
- "name": "isPriceOracle",
- "outputs": [
+ "inputs": [
{
+ "internalType": "address",
"name": "",
- "type": "bool"
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x66331bba"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "cEtherAddress",
+ "name": "nonces",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xde836acf"
+ "signature": "0x7ecebe00"
},
{
"constant": true,
- "inputs": [
- {
- "name": "cToken",
- "type": "address"
- }
- ],
- "name": "getUnderlyingPrice",
+ "inputs": [],
+ "name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xfc57d4df"
+ "signature": "0x95d89b41"
},
{
"constant": true,
"inputs": [],
- "name": "v1PriceOracle",
+ "name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xfe10c98d"
+ "signature": "0x18160ddd"
},
{
+ "constant": false,
"inputs": [
{
- "name": "comptroller_",
- "type": "address"
- },
- {
- "name": "v1PriceOracle_",
+ "internalType": "address",
+ "name": "dst",
"type": "address"
},
{
- "name": "cEtherAddress_",
- "type": "address"
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- }
- ],
- "Maximillion": [
- {
- "constant": true,
- "inputs": [],
- "name": "cEther",
+ "name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "address"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x19b68c00"
+ "signature": "0xa9059cbb"
},
{
"constant": false,
"inputs": [
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "src",
"type": "address"
},
{
- "name": "cEther_",
+ "internalType": "address",
+ "name": "dst",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "name": "repayBehalfExplicit",
- "outputs": [],
- "payable": true,
- "stateMutability": "payable",
- "type": "function",
- "signature": "0x367b7f05"
- },
- {
- "constant": false,
- "inputs": [
+ "name": "transferFrom",
+ "outputs": [
{
- "name": "borrower",
- "type": "address"
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
- "name": "repayBehalf",
- "outputs": [],
- "payable": true,
- "stateMutability": "payable",
+ "payable": false,
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x9f35c3d5"
+ "signature": "0x23b872dd"
},
{
+ "constant": true,
"inputs": [
{
- "name": "cEther_",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- }
- ],
- "cDAI": [
- {
- "constant": true,
- "inputs": [],
- "name": "name",
+ "name": "votesLength",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x06fdde03"
- },
+ "signature": "0xdbc04ef2"
+ }
+ ],
+ "cBAT": [
{
- "constant": false,
"inputs": [
{
- "name": "spender",
+ "internalType": "address",
+ "name": "underlying_",
"type": "address"
},
{
- "name": "amount",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
- }
- ],
- "name": "approve",
- "outputs": [
+ },
{
- "name": "",
- "type": "bool"
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
+ },
+ {
+ "internalType": "address payable",
+ "name": "admin_",
+ "type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x095ea7b3"
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "repayAmount",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "interestAccumulated",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowIndex",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "repayBorrow",
- "outputs": [
+ "name": "AccrueInterest",
+ "type": "event",
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x0e752702"
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
- "constant": true,
- "inputs": [],
- "name": "reserveFactorMantissa",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x173b9904"
+ "name": "Borrow",
+ "type": "event",
+ "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "account",
- "type": "address"
- }
- ],
- "name": "borrowBalanceCurrent",
- "outputs": [
- {
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
"type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x17bfdfbc"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
"type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x18160ddd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "exchangeRateStored",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x182df0f5"
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "src",
+ "indexed": false,
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "dst",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "amount",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
- }
- ],
- "name": "transferFrom",
- "outputs": [
+ },
{
- "name": "",
- "type": "bool"
+ "indexed": false,
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x23b872dd"
+ "name": "LiquidateBorrow",
+ "type": "event",
+ "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "borrower",
+ "indexed": false,
+ "internalType": "address",
+ "name": "minter",
"type": "address"
},
{
- "name": "repayAmount",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintAmount",
"type": "uint256"
- }
- ],
- "name": "repayBorrowBehalf",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x2608f818"
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
},
{
- "constant": true,
- "inputs": [],
- "name": "pendingAdmin",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
"type": "address"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x26782247"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "decimals",
- "outputs": [
+ },
{
- "name": "",
- "type": "uint256"
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x313ce567"
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "owner",
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "oldComptroller",
"type": "address"
- }
- ],
- "name": "balanceOfUnderlying",
- "outputs": [
+ },
{
- "name": "",
- "type": "uint256"
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x3af9e669"
+ "name": "NewComptroller",
+ "type": "event",
+ "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
},
{
- "constant": true,
- "inputs": [],
- "name": "getCash",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "uint256"
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "oldInterestRateModel",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x3b1d21a2"
+ "name": "NewMarketInterestRateModel",
+ "type": "event",
+ "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "newComptroller",
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
"type": "address"
- }
- ],
- "name": "_setComptroller",
- "outputs": [
+ },
{
- "name": "",
- "type": "uint256"
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x4576b5db"
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
},
{
- "constant": true,
- "inputs": [],
- "name": "totalBorrows",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x47bd3718"
+ "name": "NewReserveFactor",
+ "type": "event",
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
},
{
- "constant": true,
- "inputs": [],
- "name": "comptroller",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "redeemer",
"type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x5fe3b567"
+ "name": "Redeem",
+ "type": "event",
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "reduceAmount",
+ "indexed": false,
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
- }
- ],
- "name": "_reduceReserves",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
"type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x601a0bf1"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "initialExchangeRateMantissa",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x675d972c"
+ "name": "RepayBorrow",
+ "type": "event",
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
},
{
- "constant": true,
- "inputs": [],
- "name": "accrualBlockNumber",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "benefactor",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x6c540baf"
+ "name": "ReservesAdded",
+ "type": "event",
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
},
{
- "constant": true,
- "inputs": [],
- "name": "underlying",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "admin",
"type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x6f307dc3"
+ "name": "ReservesReduced",
+ "type": "event",
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "owner",
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
"type": "address"
- }
- ],
- "name": "balanceOf",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x70a08231"
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
"constant": false,
"inputs": [],
- "name": "totalBorrowsCurrent",
+ "name": "_acceptAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2184,19 +11120,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x73acee98"
+ "signature": "0xe9c714f2"
},
{
"constant": false,
"inputs": [
{
- "name": "redeemAmount",
+ "internalType": "uint256",
+ "name": "addAmount",
"type": "uint256"
}
],
- "name": "redeemUnderlying",
+ "name": "_addReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2204,69 +11142,65 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x852a12e3"
+ "signature": "0x3e941010"
},
{
- "constant": true,
- "inputs": [],
- "name": "totalReserves",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "uint256",
+ "name": "reduceAmount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x8f840ddd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "symbol",
+ "name": "_reduceReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x601a0bf1"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
"type": "address"
}
],
- "name": "borrowBalanceStored",
+ "name": "_setComptroller",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x95dd9193"
+ "signature": "0x4576b5db"
},
{
"constant": false,
"inputs": [
{
- "name": "mintAmount",
- "type": "uint256"
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
}
],
- "name": "mint",
+ "name": "_setInterestRateModel",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2274,14 +11208,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa0712d68"
+ "signature": "0xf2b3abbd"
},
{
"constant": false,
- "inputs": [],
- "name": "accrueInterest",
+ "inputs": [
+ {
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2289,38 +11230,37 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa6afed95"
+ "signature": "0xb71d1a0c"
},
{
"constant": false,
"inputs": [
{
- "name": "dst",
- "type": "address"
- },
- {
- "name": "amount",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "transfer",
+ "name": "_setReserveFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0xfca7820b"
},
{
"constant": true,
"inputs": [],
- "name": "borrowIndex",
+ "name": "accrualBlockNumber",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2328,122 +11268,143 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xaa5af0fd"
+ "signature": "0x6c540baf"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "supplyRatePerBlock",
+ "name": "accrueInterest",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa6afed95"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
+ {
+ "internalType": "address payable",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xae9d70b0"
+ "signature": "0xf851a440"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "liquidator",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
- },
- {
- "name": "seizeTokens",
- "type": "uint256"
}
],
- "name": "seize",
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xb2a02ff1"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
- "name": "newPendingAdmin",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "name": "_setPendingAdmin",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0x095ea7b3"
},
{
- "constant": false,
- "inputs": [],
- "name": "exchangeRateCurrent",
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xbd6d894d"
+ "signature": "0x70a08231"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
}
],
- "name": "getAccountSnapshot",
+ "name": "balanceOfUnderlying",
"outputs": [
{
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc37f68e2"
+ "signature": "0x3af9e669"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "uint256",
"name": "borrowAmount",
"type": "uint256"
}
@@ -2451,6 +11412,7 @@
"name": "borrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2464,13 +11426,15 @@
"constant": false,
"inputs": [
{
- "name": "redeemTokens",
- "type": "uint256"
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
}
],
- "name": "redeem",
+ "name": "borrowBalanceCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2478,23 +11442,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xdb006a75"
+ "signature": "0x17bfdfbc"
},
{
"constant": true,
"inputs": [
{
- "name": "owner",
- "type": "address"
- },
- {
- "name": "spender",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "name": "allowance",
+ "name": "borrowBalanceStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2502,49 +11464,47 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0x95dd9193"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "_acceptAdmin",
+ "name": "borrowIndex",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0xaa5af0fd"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "newInterestRateModel",
- "type": "address"
- }
- ],
- "name": "_setInterestRateModel",
+ "constant": true,
+ "inputs": [],
+ "name": "borrowRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xf2b3abbd"
+ "signature": "0xf8f9da28"
},
{
"constant": true,
"inputs": [],
- "name": "interestRateModel",
+ "name": "comptroller",
"outputs": [
{
+ "internalType": "contract ComptrollerInterface",
"name": "",
"type": "address"
}
@@ -2552,57 +11512,47 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf3fdb15a"
+ "signature": "0x5fe3b567"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "borrower",
- "type": "address"
- },
- {
- "name": "repayAmount",
- "type": "uint256"
- },
- {
- "name": "cTokenCollateral",
- "type": "address"
- }
- ],
- "name": "liquidateBorrow",
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
- "type": "uint256"
+ "type": "uint8"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xf5e3c462"
+ "signature": "0x313ce567"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "admin",
+ "name": "exchangeRateCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf851a440"
+ "signature": "0xbd6d894d"
},
{
"constant": true,
"inputs": [],
- "name": "borrowRatePerBlock",
+ "name": "exchangeRateStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -2610,483 +11560,486 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf8f9da28"
+ "signature": "0x182df0f5"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "newReserveFactorMantissa",
- "type": "uint256"
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
}
],
- "name": "_setReserveFactor",
+ "name": "getAccountSnapshot",
"outputs": [
{
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xfca7820b"
+ "signature": "0xc37f68e2"
},
{
"constant": true,
"inputs": [],
- "name": "isCToken",
+ "name": "getCash",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xfe9c44ae"
+ "signature": "0x3b1d21a2"
},
{
+ "constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "underlying_",
"type": "address"
},
{
+ "internalType": "contract ComptrollerInterface",
"name": "comptroller_",
"type": "address"
},
{
+ "internalType": "contract InterestRateModel",
"name": "interestRateModel_",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "initialExchangeRateMantissa_",
"type": "uint256"
},
{
+ "internalType": "string",
"name": "name_",
"type": "string"
},
{
+ "internalType": "string",
"name": "symbol_",
"type": "string"
},
{
+ "internalType": "uint8",
"name": "decimals_",
- "type": "uint256"
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "interestAccumulated",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "borrowIndex",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "totalBorrows",
- "type": "uint256"
- }
- ],
- "name": "AccrueInterest",
- "type": "event",
- "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "minter",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "mintAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "mintTokens",
- "type": "uint256"
- }
- ],
- "name": "Mint",
- "type": "event",
- "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+ "type": "function",
+ "signature": "0x1a31d465"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "redeemer",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
"type": "address"
},
{
- "indexed": false,
- "name": "redeemAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "redeemTokens",
- "type": "uint256"
- }
- ],
- "name": "Redeem",
- "type": "event",
- "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "borrower",
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
"type": "address"
},
{
- "indexed": false,
- "name": "borrowAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "accountBorrows",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
- }
- ],
- "name": "Borrow",
- "type": "event",
- "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "payer",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrower",
- "type": "address"
},
{
- "indexed": false,
- "name": "repayAmount",
- "type": "uint256"
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
},
{
- "indexed": false,
- "name": "accountBorrows",
- "type": "uint256"
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
},
{
- "indexed": false,
- "name": "totalBorrows",
- "type": "uint256"
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
- "name": "RepayBorrow",
- "type": "event",
- "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x99d8c1b4"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "interestRateModel",
+ "outputs": [
{
- "indexed": false,
- "name": "liquidator",
+ "internalType": "contract InterestRateModel",
+ "name": "",
"type": "address"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf3fdb15a"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isCToken",
+ "outputs": [
{
- "indexed": false,
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xfe9c44ae"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
- "indexed": false,
+ "internalType": "uint256",
"name": "repayAmount",
"type": "uint256"
},
{
- "indexed": false,
+ "internalType": "contract CTokenInterface",
"name": "cTokenCollateral",
"type": "address"
- },
+ }
+ ],
+ "name": "liquidateBorrow",
+ "outputs": [
{
- "indexed": false,
- "name": "seizeTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "LiquidateBorrow",
- "type": "event",
- "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf5e3c462"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldPendingAdmin",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "mint",
+ "outputs": [
{
- "indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewPendingAdmin",
- "type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa0712d68"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldAdmin",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
{
- "indexed": false,
- "name": "newAdmin",
- "type": "address"
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
- "name": "NewAdmin",
- "type": "event",
- "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldComptroller",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
{
- "indexed": false,
- "name": "newComptroller",
+ "internalType": "address payable",
+ "name": "",
"type": "address"
}
],
- "name": "NewComptroller",
- "type": "event",
- "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldInterestRateModel",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeem",
+ "outputs": [
{
- "indexed": false,
- "name": "newInterestRateModel",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewMarketInterestRateModel",
- "type": "event",
- "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xdb006a75"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldReserveFactorMantissa",
+ "internalType": "uint256",
+ "name": "redeemAmount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "redeemUnderlying",
+ "outputs": [
{
- "indexed": false,
- "name": "newReserveFactorMantissa",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "NewReserveFactor",
- "type": "event",
- "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x852a12e3"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "admin",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "reduceAmount",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "repayBorrow",
+ "outputs": [
{
- "indexed": false,
- "name": "newTotalReserves",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "ReservesReduced",
- "type": "event",
- "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x0e752702"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "error",
- "type": "uint256"
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
},
{
- "indexed": false,
- "name": "info",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "repayBorrowBehalf",
+ "outputs": [
{
- "indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x2608f818"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "name": "to",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "reserveFactorMantissa",
+ "outputs": [
{
- "indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Transfer",
- "type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x173b9904"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": true,
- "name": "owner",
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "indexed": true,
- "name": "spender",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- }
- ],
- "DAI": [
+ "name": "seize",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb2a02ff1"
+ },
{
"constant": true,
"inputs": [],
- "name": "name",
+ "name": "supplyRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x06fdde03"
+ "signature": "0xae9d70b0"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
{
- "name": "_owner",
- "type": "address"
- },
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
+ "outputs": [
{
- "name": "value",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "allocateTo",
- "outputs": [],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x08bca566"
+ "signature": "0x47bd3718"
},
{
"constant": false,
- "inputs": [
- {
- "name": "_spender",
- "type": "address"
- },
+ "inputs": [],
+ "name": "totalBorrowsCurrent",
+ "outputs": [
{
- "name": "_value",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "approve",
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x73acee98"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0x8f840ddd"
},
{
"constant": true,
@@ -3094,6 +12047,7 @@
"name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -3107,21 +12061,52 @@
"constant": false,
"inputs": [
{
- "name": "_from",
+ "internalType": "address",
+ "name": "dst",
"type": "address"
},
{
- "name": "_to",
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa9059cbb"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "src",
"type": "address"
},
{
- "name": "_value",
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -3134,53 +12119,66 @@
{
"constant": true,
"inputs": [],
- "name": "decimals",
+ "name": "underlying",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint8"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x313ce567"
- },
+ "signature": "0x6f307dc3"
+ }
+ ],
+ "Base0bps_Slope2000bps": [
{
- "constant": false,
"inputs": [
{
- "name": "_spender",
- "type": "address"
+ "internalType": "uint256",
+ "name": "baseRatePerYear",
+ "type": "uint256"
},
{
- "name": "_subtractedValue",
+ "internalType": "uint256",
+ "name": "multiplierPerYear",
"type": "uint256"
}
],
- "name": "decreaseApproval",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
"payable": false,
"stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x66188463"
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "_owner",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "baseRatePerBlock",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "multiplierPerBlock",
+ "type": "uint256"
}
],
- "name": "balanceOf",
+ "name": "NewInterestParams",
+ "type": "event",
+ "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "baseRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -3188,110 +12186,178 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x70a08231"
+ "signature": "0xf14039de"
},
{
"constant": true,
"inputs": [],
- "name": "symbol",
+ "name": "blocksPerYear",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0xa385fb96"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "_to",
- "type": "address"
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
},
{
- "name": "_value",
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
"type": "uint256"
}
],
- "name": "transfer",
+ "name": "getBorrowRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0x15f24053"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "_spender",
- "type": "address"
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
},
{
- "name": "_addedValue",
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveFactorMantissa",
"type": "uint256"
}
],
- "name": "increaseApproval",
+ "name": "getSupplyRate",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xb8168816"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isInterestRateModel",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xd73dd623"
+ "signature": "0x2191f92a"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "multiplierPerBlock",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x8726bb89"
},
{
"constant": true,
"inputs": [
{
- "name": "_owner",
- "type": "address"
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
},
{
- "name": "_spender",
- "type": "address"
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
+ "type": "uint256"
}
],
- "name": "allowance",
+ "name": "utilizationRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "pure",
"type": "function",
- "signature": "0xdd62ed3e"
- },
+ "signature": "0x6e71e2d8"
+ }
+ ],
+ "BAT": [
{
"inputs": [
{
+ "internalType": "uint256",
"name": "_initialAmount",
"type": "uint256"
},
{
+ "internalType": "string",
"name": "_tokenName",
"type": "string"
},
{
+ "internalType": "uint8",
"name": "_decimalUnits",
"type": "uint8"
},
{
+ "internalType": "string",
"name": "_tokenSymbol",
"type": "string"
}
@@ -3306,16 +12372,19 @@
"inputs": [
{
"indexed": true,
+ "internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
+ "internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "value",
"type": "uint256"
}
@@ -3329,16 +12398,19 @@
"inputs": [
{
"indexed": true,
+ "internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
+ "internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "value",
"type": "uint256"
}
@@ -3346,559 +12418,729 @@
"name": "Transfer",
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
- }
- ],
- "StdComptroller": [
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "allocateTo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x08bca566"
+ },
{
"constant": true,
- "inputs": [],
- "name": "isComptroller",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x007e3dd2"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "name": "payer",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
{
- "name": "borrower",
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x095ea7b3"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
"type": "address"
- },
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
{
- "name": "borrowerIndex",
- "type": "uint256"
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
}
],
- "name": "repayBorrowVerify",
- "outputs": [],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x1ededc91"
+ "signature": "0x313ce567"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "name": "payer",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "_subtractedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "decreaseApproval",
+ "outputs": [
{
- "name": "borrower",
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x66188463"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "_addedValue",
"type": "uint256"
}
],
- "name": "repayBorrowAllowed",
+ "name": "increaseApproval",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x24008a62"
+ "signature": "0xd73dd623"
},
{
"constant": true,
"inputs": [],
- "name": "pendingAdmin",
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "address"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0x06fdde03"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
{
- "name": "newCloseFactorMantissa",
- "type": "uint256"
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
- "name": "_setCloseFactor",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x317b0b77"
+ "signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
- "name": "unitroller",
- "type": "address"
- },
- {
- "name": "_oracle",
+ "internalType": "address",
+ "name": "_to",
"type": "address"
},
{
- "name": "_closeFactorMantissa",
- "type": "uint256"
- },
- {
- "name": "_maxAssets",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
- },
- {
- "name": "reinitializing",
- "type": "bool"
}
],
- "name": "_become",
+ "name": "transfer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x32000e00"
+ "signature": "0xa9059cbb"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "_from",
"type": "address"
},
{
- "name": "minter",
+ "internalType": "address",
+ "name": "_to",
"type": "address"
},
{
- "name": "mintAmount",
- "type": "uint256"
- },
- {
- "name": "mintTokens",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "mintVerify",
+ "name": "transferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x41c728b9"
+ "signature": "0x23b872dd"
+ }
+ ],
+ "cErc20Delegate": [
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cTokenBorrowed",
- "type": "address"
- },
- {
- "name": "cTokenCollateral",
- "type": "address"
- },
- {
- "name": "liquidator",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
},
{
- "name": "borrower",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "interestAccumulated",
+ "type": "uint256"
},
{
- "name": "repayAmount",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowIndex",
"type": "uint256"
},
{
- "name": "seizeTokens",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "liquidateBorrowVerify",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x47ef3b3b"
+ "name": "AccrueInterest",
+ "type": "event",
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
},
{
- "constant": true,
- "inputs": [],
- "name": "liquidationIncentiveMantissa",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x4ada90af"
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cToken",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "minter",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
},
{
- "name": "mintAmount",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
"type": "uint256"
- }
- ],
- "name": "mintAllowed",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x4ef4c3e1"
+ "name": "Borrow",
+ "type": "event",
+ "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "newLiquidationIncentiveMantissa",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
"type": "uint256"
- }
- ],
- "name": "_setLiquidationIncentive",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x4fd42e17"
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cToken",
+ "indexed": false,
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "redeemer",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "redeemAmount",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
},
{
- "name": "redeemTokens",
+ "indexed": false,
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "name": "redeemVerify",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x51dff989"
+ "name": "LiquidateBorrow",
+ "type": "event",
+ "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "newOracle",
+ "indexed": false,
+ "internalType": "address",
+ "name": "minter",
"type": "address"
- }
- ],
- "name": "_setPriceOracle",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x55ee1fe1"
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cToken",
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
"type": "address"
},
{
- "name": "borrower",
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
"type": "address"
- },
- {
- "name": "borrowAmount",
- "type": "uint256"
}
],
- "name": "borrowVerify",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x5c778605"
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "account",
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "oldComptroller",
"type": "address"
- }
- ],
- "name": "getAccountLiquidity",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
},
{
- "name": "",
- "type": "uint256"
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x5ec88c79"
+ "name": "NewComptroller",
+ "type": "event",
+ "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cTokenBorrowed",
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "oldInterestRateModel",
"type": "address"
},
{
- "name": "cTokenCollateral",
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
"type": "address"
- },
+ }
+ ],
+ "name": "NewMarketInterestRateModel",
+ "type": "event",
+ "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "liquidator",
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
"type": "address"
},
{
- "name": "borrower",
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
"type": "address"
- },
- {
- "name": "repayAmount",
- "type": "uint256"
}
],
- "name": "liquidateBorrowAllowed",
- "outputs": [
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x5fc7e71e"
+ "name": "NewReserveFactor",
+ "type": "event",
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cToken",
- "type": "address"
- },
- {
- "name": "src",
+ "indexed": false,
+ "internalType": "address",
+ "name": "redeemer",
"type": "address"
},
{
- "name": "dst",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
},
{
- "name": "transferTokens",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemTokens",
"type": "uint256"
}
],
- "name": "transferVerify",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x6a56947e"
+ "name": "Redeem",
+ "type": "event",
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cTokenCollateral",
- "type": "address"
- },
- {
- "name": "cTokenBorrowed",
- "type": "address"
- },
- {
- "name": "liquidator",
+ "indexed": false,
+ "internalType": "address",
+ "name": "payer",
"type": "address"
},
{
+ "indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
- "name": "seizeTokens",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "seizeVerify",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x6d35bf91"
+ "name": "RepayBorrow",
+ "type": "event",
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
},
{
- "constant": true,
- "inputs": [],
- "name": "oracle",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "benefactor",
"type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x7dc0d1d0"
+ "name": "ReservesAdded",
+ "type": "event",
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "admin",
"type": "address"
- }
- ],
- "name": "markets",
- "outputs": [
+ },
{
- "name": "isListed",
- "type": "bool"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
},
{
- "name": "collateralFactorMantissa",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x8e8f294b"
+ "name": "ReservesReduced",
+ "type": "event",
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "account",
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
"type": "address"
},
{
- "name": "cToken",
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
"type": "address"
- }
- ],
- "name": "checkMembership",
- "outputs": [
+ },
{
- "name": "",
- "type": "bool"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x929fe9a1"
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "maxAssets",
+ "name": "_acceptAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x94b2294b"
+ "signature": "0xe9c714f2"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
- "type": "address"
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
}
],
- "name": "_supportMarket",
+ "name": "_addReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -3906,66 +13148,69 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa76b3fda"
+ "signature": "0x3e941010"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
- "type": "address"
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
}
],
- "name": "getAssetsIn",
+ "name": "_becomeImplementation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x56e67728"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_reduceReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address[]"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xabfceffc"
+ "signature": "0x601a0bf1"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "comptrollerImplementation",
- "outputs": [
- {
- "name": "",
- "type": "address"
- }
- ],
+ "name": "_resignImplementation",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xbb82aa5e"
+ "signature": "0x153ab505"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
- "type": "address"
- },
- {
- "name": "src",
- "type": "address"
- },
- {
- "name": "dst",
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
"type": "address"
- },
- {
- "name": "transferTokens",
- "type": "uint256"
}
],
- "name": "transferAllowed",
+ "name": "_setComptroller",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -3973,87 +13218,65 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xbdcdc258"
+ "signature": "0x4576b5db"
},
{
"constant": false,
"inputs": [
{
- "name": "cTokens",
- "type": "address[]"
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
}
],
- "name": "enterMarkets",
+ "name": "_setInterestRateModel",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "uint256[]"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc2998238"
+ "signature": "0xf2b3abbd"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "cTokenBorrowed",
- "type": "address"
- },
- {
- "name": "cTokenCollateral",
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
"type": "address"
- },
- {
- "name": "repayAmount",
- "type": "uint256"
}
],
- "name": "liquidateCalculateSeizeTokens",
+ "name": "_setPendingAdmin",
"outputs": [
{
- "name": "",
- "type": "uint256"
- },
- {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc488847b"
+ "signature": "0xb71d1a0c"
},
{
"constant": false,
"inputs": [
{
- "name": "cTokenCollateral",
- "type": "address"
- },
- {
- "name": "cTokenBorrowed",
- "type": "address"
- },
- {
- "name": "liquidator",
- "type": "address"
- },
- {
- "name": "borrower",
- "type": "address"
- },
- {
- "name": "seizeTokens",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "seizeAllowed",
+ "name": "_setReserveFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4061,19 +13284,31 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xd02f7351"
+ "signature": "0xfca7820b"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "accrualBlockNumber",
+ "outputs": [
{
- "name": "newMaxAssets",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "_setMaxAssets",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6c540baf"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "accrueInterest",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4081,90 +13316,113 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xd9226ced"
+ "signature": "0xa6afed95"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
{
- "name": "cToken",
+ "internalType": "address payable",
+ "name": "",
"type": "address"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
+ },
+ {
+ "constant": true,
+ "inputs": [
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "name": "borrowAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
}
],
- "name": "borrowAllowed",
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xda3d454c"
+ "signature": "0xdd62ed3e"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
- "name": "",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "accountAssets",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "address"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xdce15449"
+ "signature": "0x095ea7b3"
},
{
"constant": true,
- "inputs": [],
- "name": "pendingComptrollerImplementation",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdcfbc0c7"
+ "signature": "0x70a08231"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
- },
- {
- "name": "newCollateralFactorMantissa",
- "type": "uint256"
}
],
- "name": "_setCollateralFactor",
+ "name": "balanceOfUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4172,42 +13430,43 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe4028eee"
+ "signature": "0x3af9e669"
},
{
- "constant": true,
- "inputs": [],
- "name": "closeFactorMantissa",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe8755446"
+ "signature": "0xc5ebeaec"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
- "type": "address"
- },
- {
- "name": "redeemer",
+ "internalType": "address",
+ "name": "account",
"type": "address"
- },
- {
- "name": "redeemTokens",
- "type": "uint256"
}
],
- "name": "redeemAllowed",
+ "name": "borrowBalanceCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4215,225 +13474,186 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xeabe7d91"
+ "signature": "0x17bfdfbc"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "cTokenAddress",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "name": "exitMarket",
+ "name": "borrowBalanceStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xede4edd0"
+ "signature": "0x95dd9193"
},
{
"constant": true,
"inputs": [],
- "name": "admin",
+ "name": "borrowIndex",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf851a440"
+ "signature": "0xaa5af0fd"
},
{
+ "constant": true,
"inputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "cToken",
- "type": "address"
- }
- ],
- "name": "MarketListed",
- "type": "event",
- "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "cToken",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "account",
- "type": "address"
- }
- ],
- "name": "MarketEntered",
- "type": "event",
- "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "cToken",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "account",
- "type": "address"
- }
- ],
- "name": "MarketExited",
- "type": "event",
- "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldCloseFactorMantissa",
- "type": "uint256"
- },
+ "name": "borrowRatePerBlock",
+ "outputs": [
{
- "indexed": false,
- "name": "newCloseFactorMantissa",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "NewCloseFactor",
- "type": "event",
- "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf8f9da28"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "comptroller",
+ "outputs": [
{
- "indexed": false,
- "name": "cToken",
+ "internalType": "contract ComptrollerInterface",
+ "name": "",
"type": "address"
- },
- {
- "indexed": false,
- "name": "oldCollateralFactorMantissa",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "newCollateralFactorMantissa",
- "type": "uint256"
}
],
- "name": "NewCollateralFactor",
- "type": "event",
- "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x5fe3b567"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldLiquidationIncentiveMantissa",
- "type": "uint256"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
{
- "indexed": false,
- "name": "newLiquidationIncentiveMantissa",
- "type": "uint256"
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
}
],
- "name": "NewLiquidationIncentive",
- "type": "event",
- "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x313ce567"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldMaxAssets",
- "type": "uint256"
- },
+ "constant": false,
+ "inputs": [],
+ "name": "exchangeRateCurrent",
+ "outputs": [
{
- "indexed": false,
- "name": "newMaxAssets",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "NewMaxAssets",
- "type": "event",
- "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbd6d894d"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldPriceOracle",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "exchangeRateStored",
+ "outputs": [
{
- "indexed": false,
- "name": "newPriceOracle",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewPriceOracle",
- "type": "event",
- "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x182df0f5"
},
{
- "anonymous": false,
+ "constant": true,
"inputs": [
{
- "indexed": false,
- "name": "error",
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountSnapshot",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
},
{
- "indexed": false,
- "name": "info",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
},
{
- "indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
- }
- ],
- "Unitroller": [
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xc37f68e2"
+ },
{
"constant": true,
"inputs": [],
- "name": "pendingAdmin",
+ "name": "getCash",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x3b1d21a2"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "implementation",
"outputs": [
{
+ "internalType": "address",
"name": "",
"type": "address"
}
@@ -4441,84 +13661,150 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0x5c60da1b"
},
{
"constant": false,
"inputs": [
{
- "name": "newPendingAdmin",
+ "internalType": "address",
+ "name": "underlying_",
"type": "address"
- }
- ],
- "name": "_setPendingAdmin",
- "outputs": [
+ },
{
- "name": "",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0x1a31d465"
},
{
- "constant": true,
- "inputs": [],
- "name": "comptrollerImplementation",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
"type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xbb82aa5e"
+ "signature": "0x99d8c1b4"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "_acceptImplementation",
+ "name": "interestRateModel",
"outputs": [
{
+ "internalType": "contract InterestRateModel",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xc1e80334"
+ "signature": "0xf3fdb15a"
},
{
"constant": true,
"inputs": [],
- "name": "pendingComptrollerImplementation",
+ "name": "isCToken",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "address"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdcfbc0c7"
+ "signature": "0xfe9c44ae"
},
{
"constant": false,
"inputs": [
{
- "name": "newPendingImplementation",
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "contract CTokenInterface",
+ "name": "cTokenCollateral",
"type": "address"
}
],
- "name": "_setPendingImplementation",
+ "name": "liquidateBorrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4526,14 +13812,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe992a041"
+ "signature": "0xf5e3c462"
},
{
"constant": false,
- "inputs": [],
- "name": "_acceptAdmin",
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "mint",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4541,158 +13834,172 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0xa0712d68"
},
{
"constant": true,
"inputs": [],
- "name": "admin",
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "address"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf851a440"
+ "signature": "0x06fdde03"
},
{
+ "constant": true,
"inputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- },
- {
- "payable": true,
- "stateMutability": "payable",
- "type": "fallback"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldPendingImplementation",
- "type": "address"
- },
+ "name": "pendingAdmin",
+ "outputs": [
{
- "indexed": false,
- "name": "newPendingImplementation",
+ "internalType": "address payable",
+ "name": "",
"type": "address"
}
],
- "name": "NewPendingImplementation",
- "type": "event",
- "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldImplementation",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeem",
+ "outputs": [
{
- "indexed": false,
- "name": "newImplementation",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewImplementation",
- "type": "event",
- "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xdb006a75"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldPendingAdmin",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemUnderlying",
+ "outputs": [
{
- "indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewPendingAdmin",
- "type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x852a12e3"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldAdmin",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrow",
+ "outputs": [
{
- "indexed": false,
- "name": "newAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewAdmin",
- "type": "event",
- "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x0e752702"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "error",
- "type": "uint256"
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
},
{
- "indexed": false,
- "name": "info",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "repayBorrowBehalf",
+ "outputs": [
{
- "indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
- }
- ],
- "Comptroller": [
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x2608f818"
+ },
{
"constant": true,
"inputs": [],
- "name": "pendingAdmin",
+ "name": "reserveFactorMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0x173b9904"
},
{
"constant": false,
"inputs": [
{
- "name": "newPendingAdmin",
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
}
],
- "name": "_setPendingAdmin",
+ "name": "seize",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4700,29 +14007,63 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0xb2a02ff1"
},
{
"constant": true,
"inputs": [],
- "name": "comptrollerImplementation",
+ "name": "supplyRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xbb82aa5e"
+ "signature": "0xae9d70b0"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x47bd3718"
},
{
"constant": false,
"inputs": [],
- "name": "_acceptImplementation",
+ "name": "totalBorrowsCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4730,64 +14071,106 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc1e80334"
+ "signature": "0x73acee98"
},
{
"constant": true,
"inputs": [],
- "name": "pendingComptrollerImplementation",
+ "name": "totalReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdcfbc0c7"
+ "signature": "0x8f840ddd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
- "name": "newPendingImplementation",
+ "internalType": "address",
+ "name": "dst",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "name": "_setPendingImplementation",
+ "name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe992a041"
+ "signature": "0xa9059cbb"
},
{
"constant": false,
- "inputs": [],
- "name": "_acceptAdmin",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0x23b872dd"
},
{
"constant": true,
"inputs": [],
- "name": "admin",
+ "name": "underlying",
"outputs": [
{
+ "internalType": "address",
"name": "",
"type": "address"
}
@@ -4795,8 +14178,10 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf851a440"
- },
+ "signature": "0x6f307dc3"
+ }
+ ],
+ "StdComptrollerG1": [
{
"inputs": [],
"payable": false,
@@ -4805,174 +14190,267 @@
"signature": "constructor"
},
{
- "payable": true,
- "stateMutability": "payable",
- "type": "fallback"
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
+ }
+ ],
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldPendingImplementation",
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
},
{
"indexed": false,
- "name": "newPendingImplementation",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "name": "NewPendingImplementation",
+ "name": "MarketEntered",
"type": "event",
- "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
+ "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldImplementation",
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
},
{
"indexed": false,
- "name": "newImplementation",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "name": "NewImplementation",
+ "name": "MarketExited",
"type": "event",
- "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+ "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldPendingAdmin",
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
+ }
+ ],
+ "name": "MarketListed",
+ "type": "event",
+ "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldCloseFactorMantissa",
+ "type": "uint256"
},
{
"indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
+ "type": "uint256"
}
],
- "name": "NewPendingAdmin",
+ "name": "NewCloseFactor",
"type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldAdmin",
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
},
{
"indexed": false,
- "name": "newAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "oldCollateralFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
+ "type": "uint256"
}
],
- "name": "NewAdmin",
+ "name": "NewCollateralFactor",
"type": "event",
- "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "error",
+ "internalType": "uint256",
+ "name": "oldLiquidationIncentiveMantissa",
"type": "uint256"
},
{
"indexed": false,
- "name": "info",
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewLiquidationIncentive",
+ "type": "event",
+ "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldMaxAssets",
"type": "uint256"
},
{
"indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "newMaxAssets",
"type": "uint256"
}
],
- "name": "Failure",
+ "name": "NewMaxAssets",
"type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
},
{
- "constant": true,
- "inputs": [],
- "name": "isComptroller",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "bool"
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "oldPriceOracle",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract PriceOracle",
+ "name": "newPriceOracle",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x007e3dd2"
+ "name": "NewPriceOracle",
+ "type": "event",
+ "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
+ "internalType": "contract Unitroller",
+ "name": "unitroller",
"type": "address"
},
{
- "name": "payer",
+ "internalType": "contract PriceOracle",
+ "name": "_oracle",
"type": "address"
},
{
- "name": "borrower",
- "type": "address"
+ "internalType": "uint256",
+ "name": "_closeFactorMantissa",
+ "type": "uint256"
},
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "_maxAssets",
"type": "uint256"
},
{
- "name": "borrowerIndex",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "reinitializing",
+ "type": "bool"
}
],
- "name": "repayBorrowVerify",
+ "name": "_become",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x1ededc91"
+ "signature": "0x32000e00"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "newCloseFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setCloseFactor",
+ "outputs": [
{
- "name": "payer",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x317b0b77"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "name": "borrower",
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
},
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "newCollateralFactorMantissa",
"type": "uint256"
}
],
- "name": "repayBorrowAllowed",
+ "name": "_setCollateralFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -4980,34 +14458,43 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x24008a62"
+ "signature": "0xe4028eee"
},
{
- "constant": true,
- "inputs": [],
- "name": "pendingAdmin",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newLiquidationIncentiveMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setLiquidationIncentive",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0x4fd42e17"
},
{
"constant": false,
"inputs": [
{
- "name": "newCloseFactorMantissa",
+ "internalType": "uint256",
+ "name": "newMaxAssets",
"type": "uint256"
}
],
- "name": "_setCloseFactor",
+ "name": "_setMaxAssets",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -5015,135 +14502,118 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x317b0b77"
+ "signature": "0xd9226ced"
},
{
"constant": false,
"inputs": [
{
- "name": "unitroller",
- "type": "address"
- },
- {
- "name": "_oracle",
+ "internalType": "contract PriceOracle",
+ "name": "newOracle",
"type": "address"
- },
- {
- "name": "_closeFactorMantissa",
- "type": "uint256"
- },
+ }
+ ],
+ "name": "_setPriceOracle",
+ "outputs": [
{
- "name": "_maxAssets",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
- {
- "name": "reinitializing",
- "type": "bool"
}
],
- "name": "_become",
- "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x32000e00"
+ "signature": "0x55ee1fe1"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "contract CToken",
"name": "cToken",
"type": "address"
- },
- {
- "name": "minter",
- "type": "address"
- },
- {
- "name": "mintAmount",
- "type": "uint256"
- },
+ }
+ ],
+ "name": "_supportMarket",
+ "outputs": [
{
- "name": "mintTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "mintVerify",
- "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x41c728b9"
+ "signature": "0xa76b3fda"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "cTokenBorrowed",
- "type": "address"
- },
- {
- "name": "cTokenCollateral",
- "type": "address"
- },
- {
- "name": "liquidator",
- "type": "address"
- },
- {
- "name": "borrower",
+ "internalType": "address",
+ "name": "",
"type": "address"
},
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
+ }
+ ],
+ "name": "accountAssets",
+ "outputs": [
{
- "name": "seizeTokens",
- "type": "uint256"
+ "internalType": "contract CToken",
+ "name": "",
+ "type": "address"
}
],
- "name": "liquidateBorrowVerify",
- "outputs": [],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x47ef3b3b"
+ "signature": "0xdce15449"
},
{
"constant": true,
"inputs": [],
- "name": "liquidationIncentiveMantissa",
+ "name": "admin",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x4ada90af"
+ "signature": "0xf851a440"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "cToken",
"type": "address"
},
{
- "name": "minter",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "mintAmount",
+ "internalType": "uint256",
+ "name": "borrowAmount",
"type": "uint256"
}
],
- "name": "mintAllowed",
+ "name": "borrowAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -5151,102 +14621,142 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x4ef4c3e1"
+ "signature": "0xda3d454c"
},
{
"constant": false,
"inputs": [
{
- "name": "newLiquidationIncentiveMantissa",
- "type": "uint256"
- }
- ],
- "name": "_setLiquidationIncentive",
- "outputs": [
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
{
- "name": "",
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
"type": "uint256"
}
],
+ "name": "borrowVerify",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x4fd42e17"
+ "signature": "0x5c778605"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "account",
"type": "address"
},
{
- "name": "redeemer",
+ "internalType": "contract CToken",
+ "name": "cToken",
"type": "address"
- },
+ }
+ ],
+ "name": "checkMembership",
+ "outputs": [
{
- "name": "redeemAmount",
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x929fe9a1"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "closeFactorMantissa",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xe8755446"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "comptrollerImplementation",
+ "outputs": [
{
- "name": "redeemTokens",
- "type": "uint256"
+ "internalType": "address",
+ "name": "",
+ "type": "address"
}
],
- "name": "redeemVerify",
- "outputs": [],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x51dff989"
+ "signature": "0xbb82aa5e"
},
{
"constant": false,
"inputs": [
{
- "name": "newOracle",
- "type": "address"
+ "internalType": "address[]",
+ "name": "cTokens",
+ "type": "address[]"
}
],
- "name": "_setPriceOracle",
+ "name": "enterMarkets",
"outputs": [
{
+ "internalType": "uint256[]",
"name": "",
- "type": "uint256"
+ "type": "uint256[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x55ee1fe1"
+ "signature": "0xc2998238"
},
{
"constant": false,
"inputs": [
{
- "name": "cToken",
- "type": "address"
- },
- {
- "name": "borrower",
+ "internalType": "address",
+ "name": "cTokenAddress",
"type": "address"
- },
+ }
+ ],
+ "name": "exitMarket",
+ "outputs": [
{
- "name": "borrowAmount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "borrowVerify",
- "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x5c778605"
+ "signature": "0xede4edd0"
},
{
"constant": true,
"inputs": [
{
+ "internalType": "address",
"name": "account",
"type": "address"
}
@@ -5254,14 +14764,17 @@
"name": "getAccountLiquidity",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
},
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
},
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -5271,26 +14784,69 @@
"type": "function",
"signature": "0x5ec88c79"
},
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAssetsIn",
+ "outputs": [
+ {
+ "internalType": "contract CToken[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xabfceffc"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isComptroller",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x007e3dd2"
+ },
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "cTokenBorrowed",
"type": "address"
},
{
+ "internalType": "address",
"name": "cTokenCollateral",
"type": "address"
},
{
+ "internalType": "address",
"name": "liquidator",
"type": "address"
},
{
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "repayAmount",
"type": "uint256"
}
@@ -5298,6 +14854,7 @@
"name": "liquidateBorrowAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -5311,79 +14868,101 @@
"constant": false,
"inputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "cTokenBorrowed",
"type": "address"
},
{
- "name": "src",
+ "internalType": "address",
+ "name": "cTokenCollateral",
"type": "address"
},
{
- "name": "dst",
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "transferTokens",
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "name": "transferVerify",
+ "name": "liquidateBorrowVerify",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x6a56947e"
+ "signature": "0x47ef3b3b"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "cTokenCollateral",
- "type": "address"
- },
- {
+ "internalType": "address",
"name": "cTokenBorrowed",
"type": "address"
},
{
- "name": "liquidator",
+ "internalType": "address",
+ "name": "cTokenCollateral",
"type": "address"
},
{
- "name": "borrower",
- "type": "address"
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "liquidateCalculateSeizeTokens",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
},
{
- "name": "seizeTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "seizeVerify",
- "outputs": [],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x6d35bf91"
+ "signature": "0xc488847b"
},
{
"constant": true,
"inputs": [],
- "name": "oracle",
+ "name": "liquidationIncentiveMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x7dc0d1d0"
+ "signature": "0x4ada90af"
},
{
"constant": true,
"inputs": [
{
+ "internalType": "address",
"name": "",
"type": "address"
}
@@ -5391,10 +14970,12 @@
"name": "markets",
"outputs": [
{
+ "internalType": "bool",
"name": "isListed",
"type": "bool"
},
{
+ "internalType": "uint256",
"name": "collateralFactorMantissa",
"type": "uint256"
}
@@ -5406,121 +14987,222 @@
},
{
"constant": true,
+ "inputs": [],
+ "name": "maxAssets",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x94b2294b"
+ },
+ {
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "cToken",
"type": "address"
},
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "minter",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
}
],
- "name": "checkMembership",
+ "name": "mintAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x929fe9a1"
+ "signature": "0x4ef4c3e1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "mintTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "mintVerify",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x41c728b9"
},
{
"constant": true,
"inputs": [],
- "name": "maxAssets",
+ "name": "oracle",
"outputs": [
{
+ "internalType": "contract PriceOracle",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x94b2294b"
+ "signature": "0x7dc0d1d0"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
{
- "name": "cToken",
+ "internalType": "address",
+ "name": "",
"type": "address"
}
],
- "name": "_supportMarket",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingComptrollerImplementation",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xa76b3fda"
+ "signature": "0xdcfbc0c7"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
}
],
- "name": "getAssetsIn",
+ "name": "redeemAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address[]"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xabfceffc"
+ "signature": "0xeabe7d91"
},
{
- "constant": true,
- "inputs": [],
- "name": "comptrollerImplementation",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "redeemer",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
}
],
+ "name": "redeemVerify",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xbb82aa5e"
+ "signature": "0x51dff989"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "cToken",
"type": "address"
},
{
- "name": "src",
+ "internalType": "address",
+ "name": "payer",
"type": "address"
},
{
- "name": "dst",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "transferTokens",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
}
],
- "name": "transferAllowed",
+ "name": "repayBorrowAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -5528,107 +15210,150 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xbdcdc258"
+ "signature": "0x24008a62"
},
{
"constant": false,
"inputs": [
{
- "name": "cTokens",
- "type": "address[]"
- }
- ],
- "name": "enterMarkets",
- "outputs": [
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
{
- "name": "",
- "type": "uint256[]"
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrowerIndex",
+ "type": "uint256"
}
],
+ "name": "repayBorrowVerify",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc2998238"
+ "signature": "0x1ededc91"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
"name": "cTokenBorrowed",
"type": "address"
},
{
- "name": "cTokenCollateral",
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "repayAmount",
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "name": "liquidateCalculateSeizeTokens",
+ "name": "seizeAllowed",
"outputs": [
{
- "name": "",
- "type": "uint256"
- },
- {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc488847b"
+ "signature": "0xd02f7351"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "cTokenCollateral",
"type": "address"
},
{
+ "internalType": "address",
"name": "cTokenBorrowed",
"type": "address"
},
{
+ "internalType": "address",
"name": "liquidator",
"type": "address"
},
{
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "seizeTokens",
"type": "uint256"
}
],
- "name": "seizeAllowed",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
+ "name": "seizeVerify",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xd02f7351"
+ "signature": "0x6d35bf91"
},
{
"constant": false,
"inputs": [
{
- "name": "newMaxAssets",
+ "internalType": "address",
+ "name": "cToken",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "transferTokens",
"type": "uint256"
}
],
- "name": "_setMaxAssets",
+ "name": "transferAllowed",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -5636,403 +15361,628 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xd9226ced"
+ "signature": "0xbdcdc258"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "cToken",
"type": "address"
},
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "src",
"type": "address"
},
{
- "name": "borrowAmount",
- "type": "uint256"
- }
- ],
- "name": "borrowAllowed",
- "outputs": [
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
{
- "name": "",
+ "internalType": "uint256",
+ "name": "transferTokens",
"type": "uint256"
}
],
+ "name": "transferVerify",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xda3d454c"
- },
+ "signature": "0x6a56947e"
+ }
+ ],
+ "cETH": [
{
- "constant": true,
"inputs": [
{
- "name": "",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
"type": "address"
},
{
- "name": "",
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
- }
- ],
- "name": "accountAssets",
- "outputs": [
+ },
{
- "name": "",
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
+ },
+ {
+ "internalType": "address payable",
+ "name": "admin_",
"type": "address"
}
],
"payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xdce15449"
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": true,
- "inputs": [],
- "name": "pendingComptrollerImplementation",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "interestAccumulated",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowIndex",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xdcfbc0c7"
+ "name": "AccrueInterest",
+ "type": "event",
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cToken",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "name": "newCollateralFactorMantissa",
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "_setCollateralFactor",
- "outputs": [
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xe4028eee"
+ "name": "Borrow",
+ "type": "event",
+ "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
},
{
- "constant": true,
- "inputs": [],
- "name": "closeFactorMantissa",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xe8755446"
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cToken",
+ "indexed": false,
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "redeemer",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "redeemTokens",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
- }
- ],
- "name": "redeemAllowed",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xeabe7d91"
+ "name": "LiquidateBorrow",
+ "type": "event",
+ "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "cTokenAddress",
+ "indexed": false,
+ "internalType": "address",
+ "name": "minter",
"type": "address"
- }
- ],
- "name": "exitMarket",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xede4edd0"
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
},
{
- "constant": true,
- "inputs": [],
- "name": "admin",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
"type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf851a440"
- },
- {
- "inputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "cToken",
+ "internalType": "contract ComptrollerInterface",
+ "name": "oldComptroller",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
"type": "address"
}
],
- "name": "MarketListed",
+ "name": "NewComptroller",
"type": "event",
- "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+ "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "cToken",
+ "internalType": "contract InterestRateModel",
+ "name": "oldInterestRateModel",
"type": "address"
},
{
"indexed": false,
- "name": "account",
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
"type": "address"
}
],
- "name": "MarketEntered",
+ "name": "NewMarketInterestRateModel",
"type": "event",
- "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+ "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "cToken",
+ "internalType": "address",
+ "name": "oldPendingAdmin",
"type": "address"
},
{
"indexed": false,
- "name": "account",
+ "internalType": "address",
+ "name": "newPendingAdmin",
"type": "address"
}
],
- "name": "MarketExited",
+ "name": "NewPendingAdmin",
"type": "event",
- "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldCloseFactorMantissa",
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
"type": "uint256"
},
{
"indexed": false,
- "name": "newCloseFactorMantissa",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "NewCloseFactor",
+ "name": "NewReserveFactor",
"type": "event",
- "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "cToken",
+ "internalType": "address",
+ "name": "redeemer",
"type": "address"
},
{
"indexed": false,
- "name": "oldCollateralFactorMantissa",
+ "internalType": "uint256",
+ "name": "redeemAmount",
"type": "uint256"
},
{
"indexed": false,
- "name": "newCollateralFactorMantissa",
+ "internalType": "uint256",
+ "name": "redeemTokens",
"type": "uint256"
}
],
- "name": "NewCollateralFactor",
+ "name": "Redeem",
"type": "event",
- "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldLiquidationIncentiveMantissa",
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
},
{
"indexed": false,
- "name": "newLiquidationIncentiveMantissa",
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "NewLiquidationIncentive",
+ "name": "RepayBorrow",
"type": "event",
- "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldMaxAssets",
+ "internalType": "address",
+ "name": "benefactor",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "addAmount",
"type": "uint256"
},
{
"indexed": false,
- "name": "newMaxAssets",
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
}
],
- "name": "NewMaxAssets",
+ "name": "ReservesAdded",
"type": "event",
- "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "oldPriceOracle",
+ "internalType": "address",
+ "name": "admin",
"type": "address"
},
{
"indexed": false,
- "name": "newPriceOracle",
- "type": "address"
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
}
],
- "name": "NewPriceOracle",
+ "name": "ReservesReduced",
"type": "event",
- "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "error",
- "type": "uint256"
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
},
{
"indexed": false,
- "name": "info",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptAdmin",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe9c714f2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_reduceReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x601a0bf1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
+ }
+ ],
+ "name": "_setComptroller",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4576b5db"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "indexed": false,
- "name": "detail",
- "type": "uint256"
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
- }
- ],
- "cBAT": [
- {
- "constant": true,
- "inputs": [],
- "name": "name",
+ "name": "_setInterestRateModel",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x06fdde03"
+ "signature": "0xf2b3abbd"
},
{
"constant": false,
"inputs": [
{
- "name": "spender",
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
"type": "address"
- },
- {
- "name": "amount",
- "type": "uint256"
}
],
- "name": "approve",
+ "name": "_setPendingAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0xb71d1a0c"
},
{
"constant": false,
"inputs": [
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "repayBorrow",
+ "name": "_setReserveFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6040,14 +15990,15 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x0e752702"
+ "signature": "0xfca7820b"
},
{
"constant": true,
"inputs": [],
- "name": "reserveFactorMantissa",
+ "name": "accrualBlockNumber",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6055,19 +16006,15 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x173b9904"
+ "signature": "0x6c540baf"
},
{
"constant": false,
- "inputs": [
- {
- "name": "account",
- "type": "address"
- }
- ],
- "name": "borrowBalanceCurrent",
+ "inputs": [],
+ "name": "accrueInterest",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6075,29 +16022,42 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x17bfdfbc"
+ "signature": "0xa6afed95"
},
{
"constant": true,
"inputs": [],
- "name": "totalSupply",
+ "name": "admin",
"outputs": [
{
+ "internalType": "address payable",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x18160ddd"
+ "signature": "0xf851a440"
},
{
"constant": true,
- "inputs": [],
- "name": "exchangeRateStored",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6105,27 +16065,26 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x182df0f5"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
- "name": "src",
- "type": "address"
- },
- {
- "name": "dst",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -6133,73 +16092,87 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x095ea7b3"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
- },
- {
- "name": "repayAmount",
- "type": "uint256"
}
],
- "name": "repayBorrowBehalf",
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x2608f818"
+ "signature": "0x70a08231"
},
{
- "constant": true,
- "inputs": [],
- "name": "pendingAdmin",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOfUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0x3af9e669"
},
{
- "constant": true,
- "inputs": [],
- "name": "decimals",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x313ce567"
+ "signature": "0xc5ebeaec"
},
{
"constant": false,
"inputs": [
{
- "name": "owner",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "name": "balanceOfUnderlying",
+ "name": "borrowBalanceCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6207,14 +16180,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x3af9e669"
+ "signature": "0x17bfdfbc"
},
{
"constant": true,
- "inputs": [],
- "name": "getCash",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "borrowBalanceStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6222,34 +16202,31 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x3b1d21a2"
+ "signature": "0x95dd9193"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "newComptroller",
- "type": "address"
- }
- ],
- "name": "_setComptroller",
+ "constant": true,
+ "inputs": [],
+ "name": "borrowIndex",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x4576b5db"
+ "signature": "0xaa5af0fd"
},
{
"constant": true,
"inputs": [],
- "name": "totalBorrows",
+ "name": "borrowRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6257,7 +16234,7 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x47bd3718"
+ "signature": "0xf8f9da28"
},
{
"constant": true,
@@ -6265,6 +16242,7 @@
"name": "comptroller",
"outputs": [
{
+ "internalType": "contract ComptrollerInterface",
"name": "",
"type": "address"
}
@@ -6275,16 +16253,28 @@
"signature": "0x5fe3b567"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
{
- "name": "reduceAmount",
- "type": "uint256"
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
}
],
- "name": "_reduceReserves",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x313ce567"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "exchangeRateCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6292,14 +16282,15 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x601a0bf1"
+ "signature": "0xbd6d894d"
},
{
"constant": true,
"inputs": [],
- "name": "initialExchangeRateMantissa",
+ "name": "exchangeRateStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6307,14 +16298,36 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x675d972c"
+ "signature": "0x182df0f5"
},
{
"constant": true,
- "inputs": [],
- "name": "accrualBlockNumber",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountSnapshot",
"outputs": [
{
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6322,139 +16335,195 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x6c540baf"
+ "signature": "0xc37f68e2"
},
{
"constant": true,
"inputs": [],
- "name": "underlying",
+ "name": "getCash",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x6f307dc3"
+ "signature": "0x3b1d21a2"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "owner",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
- "name": "balanceOf",
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x99d8c1b4"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "interestRateModel",
"outputs": [
{
+ "internalType": "contract InterestRateModel",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x70a08231"
+ "signature": "0xf3fdb15a"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "totalBorrowsCurrent",
+ "name": "isCToken",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x73acee98"
+ "signature": "0xfe9c44ae"
},
{
"constant": false,
"inputs": [
{
- "name": "redeemAmount",
- "type": "uint256"
- }
- ],
- "name": "redeemUnderlying",
- "outputs": [
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
{
- "name": "",
- "type": "uint256"
+ "internalType": "contract CToken",
+ "name": "cTokenCollateral",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
+ "name": "liquidateBorrow",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
"type": "function",
- "signature": "0x852a12e3"
+ "signature": "0xaae40a2a"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "mint",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0x1249c58b"
},
{
"constant": true,
"inputs": [],
- "name": "totalReserves",
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x8f840ddd"
+ "signature": "0x06fdde03"
},
{
"constant": true,
"inputs": [],
- "name": "symbol",
+ "name": "pendingAdmin",
"outputs": [
{
+ "internalType": "address payable",
"name": "",
- "type": "string"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x26782247"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
- "type": "address"
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
}
],
- "name": "borrowBalanceStored",
+ "name": "redeem",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x95dd9193"
+ "signature": "0xdb006a75"
},
{
"constant": false,
"inputs": [
{
- "name": "mintAmount",
+ "internalType": "uint256",
+ "name": "redeemAmount",
"type": "uint256"
}
],
- "name": "mint",
+ "name": "redeemUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6462,53 +16531,89 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa0712d68"
+ "signature": "0x852a12e3"
},
{
"constant": false,
"inputs": [],
- "name": "accrueInterest",
+ "name": "repayBorrow",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0x4e4d9fea"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ }
+ ],
+ "name": "repayBorrowBehalf",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function",
+ "signature": "0xe5974619"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "reserveFactorMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xa6afed95"
+ "signature": "0x173b9904"
},
{
"constant": false,
"inputs": [
{
- "name": "dst",
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "amount",
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "name": "transfer",
+ "name": "seize",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0xb2a02ff1"
},
{
"constant": true,
"inputs": [],
- "name": "borrowIndex",
+ "name": "supplyRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6516,62 +16621,47 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xaa5af0fd"
+ "signature": "0xae9d70b0"
},
{
"constant": true,
"inputs": [],
- "name": "supplyRatePerBlock",
+ "name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xae9d70b0"
+ "signature": "0x95d89b41"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "liquidator",
- "type": "address"
- },
- {
- "name": "borrower",
- "type": "address"
- },
- {
- "name": "seizeTokens",
- "type": "uint256"
- }
- ],
- "name": "seize",
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xb2a02ff1"
+ "signature": "0x47bd3718"
},
{
"constant": false,
- "inputs": [
- {
- "name": "newPendingAdmin",
- "type": "address"
- }
- ],
- "name": "_setPendingAdmin",
+ "inputs": [],
+ "name": "totalBorrowsCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6579,46 +16669,31 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0x73acee98"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "exchangeRateCurrent",
+ "name": "totalReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xbd6d894d"
+ "signature": "0x8f840ddd"
},
{
"constant": true,
- "inputs": [
- {
- "name": "account",
- "type": "address"
- }
- ],
- "name": "getAccountSnapshot",
+ "inputs": [],
+ "name": "totalSupply",
"outputs": [
{
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6626,63 +16701,114 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xc37f68e2"
+ "signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
- "name": "borrowAmount",
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "borrow",
+ "name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc5ebeaec"
+ "signature": "0xa9059cbb"
},
{
"constant": false,
"inputs": [
{
- "name": "redeemTokens",
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "redeem",
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xdb006a75"
+ "signature": "0x23b872dd"
+ }
+ ],
+ "Base500bps_Slope1200bps": [
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "baseRatePerYear",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "multiplierPerYear",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "owner",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "baseRatePerBlock",
+ "type": "uint256"
},
{
- "name": "spender",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "multiplierPerBlock",
+ "type": "uint256"
}
],
- "name": "allowance",
+ "name": "NewInterestParams",
+ "type": "event",
+ "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "baseRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6690,107 +16816,116 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0xf14039de"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "_acceptAdmin",
+ "name": "blocksPerYear",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0xa385fb96"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "newInterestRateModel",
- "type": "address"
- }
- ],
- "name": "_setInterestRateModel",
- "outputs": [
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
+ },
{
- "name": "",
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xf2b3abbd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "interestRateModel",
+ "name": "getBorrowRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf3fdb15a"
+ "signature": "0x15f24053"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "borrower",
- "type": "address"
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
},
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "borrows",
"type": "uint256"
},
{
- "name": "cTokenCollateral",
- "type": "address"
+ "internalType": "uint256",
+ "name": "reserves",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveFactorMantissa",
+ "type": "uint256"
}
],
- "name": "liquidateBorrow",
+ "name": "getSupplyRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xf5e3c462"
+ "signature": "0xb8168816"
},
{
"constant": true,
"inputs": [],
- "name": "admin",
+ "name": "isInterestRateModel",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "address"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf851a440"
+ "signature": "0x2191f92a"
},
{
"constant": true,
"inputs": [],
- "name": "borrowRatePerBlock",
+ "name": "multiplierPerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -6798,72 +16933,83 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf8f9da28"
+ "signature": "0x8726bb89"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "newReserveFactorMantissa",
+ "internalType": "uint256",
+ "name": "cash",
"type": "uint256"
- }
- ],
- "name": "_setReserveFactor",
- "outputs": [
+ },
{
- "name": "",
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xfca7820b"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "isCToken",
+ "name": "utilizationRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "pure",
"type": "function",
- "signature": "0xfe9c44ae"
- },
+ "signature": "0x6e71e2d8"
+ }
+ ],
+ "cSAI": [
{
"inputs": [
{
+ "internalType": "address",
"name": "underlying_",
"type": "address"
},
{
+ "internalType": "contract ComptrollerInterface",
"name": "comptroller_",
"type": "address"
},
{
+ "internalType": "contract InterestRateModel",
"name": "interestRateModel_",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "initialExchangeRateMantissa_",
"type": "uint256"
},
{
+ "internalType": "string",
"name": "name_",
"type": "string"
},
{
+ "internalType": "string",
"name": "symbol_",
"type": "string"
},
{
+ "internalType": "uint8",
"name": "decimals_",
- "type": "uint256"
+ "type": "uint8"
+ },
+ {
+ "internalType": "address payable",
+ "name": "admin_",
+ "type": "address"
}
],
"payable": false,
@@ -6876,90 +17022,83 @@
"inputs": [
{
"indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
"name": "interestAccumulated",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "borrowIndex",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "totalBorrows",
"type": "uint256"
}
],
"name": "AccrueInterest",
"type": "event",
- "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "minter",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "indexed": false,
- "name": "mintAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "mintTokens",
- "type": "uint256"
- }
- ],
- "name": "Mint",
- "type": "event",
- "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "redeemer",
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
"indexed": false,
- "name": "redeemAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "redeemTokens",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "Redeem",
+ "name": "Approval",
"type": "event",
- "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "borrowAmount",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "accountBorrows",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "totalBorrows",
"type": "uint256"
}
@@ -6973,59 +17112,57 @@
"inputs": [
{
"indexed": false,
- "name": "payer",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrower",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "error",
"type": "uint256"
},
{
"indexed": false,
- "name": "accountBorrows",
+ "internalType": "uint256",
+ "name": "info",
"type": "uint256"
},
{
"indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "detail",
"type": "uint256"
}
],
- "name": "RepayBorrow",
+ "name": "Failure",
"type": "event",
- "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
+ "internalType": "address",
"name": "liquidator",
"type": "address"
},
{
"indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "repayAmount",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "address",
"name": "cTokenCollateral",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "seizeTokens",
"type": "uint256"
}
@@ -7039,29 +17176,39 @@
"inputs": [
{
"indexed": false,
- "name": "oldPendingAdmin",
+ "internalType": "address",
+ "name": "minter",
"type": "address"
},
{
"indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
+ "type": "uint256"
}
],
- "name": "NewPendingAdmin",
+ "name": "Mint",
"type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
+ "internalType": "address",
"name": "oldAdmin",
"type": "address"
},
{
"indexed": false,
+ "internalType": "address",
"name": "newAdmin",
"type": "address"
}
@@ -7075,11 +17222,13 @@
"inputs": [
{
"indexed": false,
+ "internalType": "contract ComptrollerInterface",
"name": "oldComptroller",
"type": "address"
},
{
"indexed": false,
+ "internalType": "contract ComptrollerInterface",
"name": "newComptroller",
"type": "address"
}
@@ -7093,11 +17242,13 @@
"inputs": [
{
"indexed": false,
+ "internalType": "contract InterestRateModel",
"name": "oldInterestRateModel",
"type": "address"
},
{
"indexed": false,
+ "internalType": "contract InterestRateModel",
"name": "newInterestRateModel",
"type": "address"
}
@@ -7111,11 +17262,33 @@
"inputs": [
{
"indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
"name": "oldReserveFactorMantissa",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "newReserveFactorMantissa",
"type": "uint256"
}
@@ -7129,62 +17302,135 @@
"inputs": [
{
"indexed": false,
- "name": "admin",
+ "internalType": "address",
+ "name": "redeemer",
"type": "address"
},
{
"indexed": false,
- "name": "reduceAmount",
+ "internalType": "uint256",
+ "name": "redeemAmount",
"type": "uint256"
},
{
"indexed": false,
- "name": "newTotalReserves",
+ "internalType": "uint256",
+ "name": "redeemTokens",
"type": "uint256"
}
],
- "name": "ReservesReduced",
+ "name": "Redeem",
"type": "event",
- "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "error",
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
+ }
+ ],
+ "name": "RepayBorrow",
+ "type": "event",
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "benefactor",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
+ }
+ ],
+ "name": "ReservesAdded",
+ "type": "event",
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "admin",
+ "type": "address"
},
{
"indexed": false,
- "name": "info",
+ "internalType": "uint256",
+ "name": "reduceAmount",
"type": "uint256"
},
{
"indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
}
],
- "name": "Failure",
+ "name": "ReservesReduced",
"type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
+ "internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
+ "internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "amount",
"type": "uint256"
}
@@ -7194,68 +17440,160 @@
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptAdmin",
+ "outputs": [
{
- "indexed": true,
- "name": "owner",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe9c714f2"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "indexed": true,
- "name": "spender",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_addReserves",
+ "outputs": [
{
- "indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- }
- ],
- "Base0bps_Slope2000bps": [
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3e941010"
+ },
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "cash",
+ "internalType": "uint256",
+ "name": "reduceAmount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "_reduceReserves",
+ "outputs": [
{
- "name": "borrows",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x601a0bf1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
+ }
+ ],
+ "name": "_setComptroller",
+ "outputs": [
{
- "name": "_reserves",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "getBorrowRate",
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4576b5db"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
+ }
+ ],
+ "name": "_setInterestRateModel",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf2b3abbd"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
+ "outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x15f24053"
+ "signature": "0xb71d1a0c"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setReserveFactor",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xfca7820b"
},
{
"constant": true,
"inputs": [],
- "name": "multiplier",
+ "name": "accrualBlockNumber",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -7263,44 +17601,58 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x1b3ed722"
+ "signature": "0x6c540baf"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "baseRate",
+ "name": "accrueInterest",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x1f68f20a"
+ "signature": "0xa6afed95"
},
{
"constant": true,
"inputs": [],
- "name": "isInterestRateModel",
+ "name": "admin",
"outputs": [
{
+ "internalType": "address payable",
"name": "",
- "type": "bool"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x2191f92a"
+ "signature": "0xf851a440"
},
{
"constant": true,
- "inputs": [],
- "name": "blocksPerYear",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -7308,90 +17660,168 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xa385fb96"
+ "signature": "0xdd62ed3e"
},
{
+ "constant": false,
"inputs": [
{
- "name": "baseRate_",
- "type": "uint256"
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
},
{
- "name": "multiplier_",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
"payable": false,
"stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- }
- ],
- "BAT": [
+ "type": "function",
+ "signature": "0x095ea7b3"
+ },
{
"constant": true,
- "inputs": [],
- "name": "name",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x06fdde03"
+ "signature": "0x70a08231"
},
{
"constant": false,
"inputs": [
{
- "name": "_owner",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
- },
+ }
+ ],
+ "name": "balanceOfUnderlying",
+ "outputs": [
{
- "name": "value",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "allocateTo",
- "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x08bca566"
+ "signature": "0x3af9e669"
},
{
"constant": false,
"inputs": [
{
- "name": "_spender",
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrow",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc5ebeaec"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
"type": "address"
- },
+ }
+ ],
+ "name": "borrowBalanceCurrent",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x17bfdfbc"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "borrowBalanceStored",
+ "outputs": [
{
- "name": "_value",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "approve",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95dd9193"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "borrowIndex",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0xaa5af0fd"
},
{
"constant": true,
"inputs": [],
- "name": "totalSupply",
+ "name": "borrowRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -7399,30 +17829,23 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x18160ddd"
+ "signature": "0xf8f9da28"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "_from",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "comptroller",
+ "outputs": [
{
- "name": "_to",
+ "internalType": "contract ComptrollerInterface",
+ "name": "",
"type": "address"
- },
- {
- "name": "_value",
- "type": "uint256"
}
],
- "name": "transferFrom",
- "outputs": [],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x5fe3b567"
},
{
"constant": true,
@@ -7430,6 +17853,7 @@
"name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
"type": "uint8"
}
@@ -7441,39 +17865,64 @@
},
{
"constant": false,
- "inputs": [
- {
- "name": "_spender",
- "type": "address"
- },
+ "inputs": [],
+ "name": "exchangeRateCurrent",
+ "outputs": [
{
- "name": "_subtractedValue",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "decreaseApproval",
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbd6d894d"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "exchangeRateStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x66188463"
+ "signature": "0x182df0f5"
},
{
"constant": true,
"inputs": [
{
- "name": "_owner",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "name": "balanceOf",
+ "name": "getAccountSnapshot",
"outputs": [
{
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -7481,237 +17930,286 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x70a08231"
+ "signature": "0xc37f68e2"
},
{
"constant": true,
"inputs": [],
- "name": "symbol",
+ "name": "getCash",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x3b1d21a2"
},
{
"constant": false,
"inputs": [
{
- "name": "_to",
+ "internalType": "address",
+ "name": "underlying_",
"type": "address"
},
{
- "name": "_value",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
- "name": "transfer",
+ "name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0x1a31d465"
},
{
"constant": false,
"inputs": [
{
- "name": "_spender",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
"type": "address"
},
{
- "name": "_addedValue",
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
- }
- ],
- "name": "increaseApproval",
- "outputs": [
+ },
{
- "name": "",
- "type": "bool"
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xd73dd623"
+ "signature": "0x99d8c1b4"
},
{
"constant": true,
- "inputs": [
- {
- "name": "_owner",
- "type": "address"
- },
+ "inputs": [],
+ "name": "interestRateModel",
+ "outputs": [
{
- "name": "_spender",
+ "internalType": "contract InterestRateModel",
+ "name": "",
"type": "address"
}
],
- "name": "allowance",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf3fdb15a"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isCToken",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0xfe9c44ae"
},
{
+ "constant": false,
"inputs": [
{
- "name": "_initialAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
},
{
- "name": "_tokenName",
- "type": "string"
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
},
{
- "name": "_decimalUnits",
- "type": "uint8"
- },
+ "internalType": "contract CTokenInterface",
+ "name": "cTokenCollateral",
+ "type": "address"
+ }
+ ],
+ "name": "liquidateBorrow",
+ "outputs": [
{
- "name": "_tokenSymbol",
- "type": "string"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
+ "type": "function",
+ "signature": "0xf5e3c462"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": true,
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "name": "spender",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "mintAmount",
"type": "uint256"
}
],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "name": "to",
- "type": "address"
- },
+ "name": "mint",
+ "outputs": [
{
- "indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Transfer",
- "type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
- }
- ],
- "cETH": [
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa0712d68"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
+ },
{
"constant": true,
"inputs": [],
- "name": "name",
+ "name": "pendingAdmin",
"outputs": [
{
+ "internalType": "address payable",
"name": "",
- "type": "string"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x06fdde03"
+ "signature": "0x26782247"
},
{
"constant": false,
"inputs": [
{
- "name": "spender",
- "type": "address"
- },
- {
- "name": "amount",
+ "internalType": "uint256",
+ "name": "redeemTokens",
"type": "uint256"
}
],
- "name": "approve",
+ "name": "redeem",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0xdb006a75"
},
{
"constant": false,
- "inputs": [],
- "name": "mint",
- "outputs": [],
- "payable": true,
- "stateMutability": "payable",
- "type": "function",
- "signature": "0x1249c58b"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "reserveFactorMantissa",
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "redeemUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x173b9904"
+ "signature": "0x852a12e3"
},
{
"constant": false,
"inputs": [
{
- "name": "account",
- "type": "address"
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
}
],
- "name": "borrowBalanceCurrent",
+ "name": "repayBorrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -7719,29 +18217,42 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x17bfdfbc"
+ "signature": "0x0e752702"
},
{
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrowBehalf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x18160ddd"
+ "signature": "0x2608f818"
},
{
"constant": true,
"inputs": [],
- "name": "exchangeRateStored",
+ "name": "reserveFactorMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -7749,127 +18260,127 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x182df0f5"
+ "signature": "0x173b9904"
},
{
"constant": false,
"inputs": [
{
- "name": "src",
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "dst",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "amount",
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "seize",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0xb2a02ff1"
},
{
"constant": true,
"inputs": [],
- "name": "pendingAdmin",
+ "name": "supplyRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0xae9d70b0"
},
{
"constant": true,
"inputs": [],
- "name": "decimals",
+ "name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x313ce567"
+ "signature": "0x95d89b41"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "owner",
- "type": "address"
- }
- ],
- "name": "balanceOfUnderlying",
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x3af9e669"
+ "signature": "0x47bd3718"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "getCash",
+ "name": "totalBorrowsCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x3b1d21a2"
+ "signature": "0x73acee98"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "newComptroller",
- "type": "address"
- }
- ],
- "name": "_setComptroller",
+ "constant": true,
+ "inputs": [],
+ "name": "totalReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x4576b5db"
+ "signature": "0x8f840ddd"
},
{
"constant": true,
"inputs": [],
- "name": "totalBorrows",
+ "name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -7877,144 +18388,289 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x47bd3718"
+ "signature": "0x18160ddd"
},
{
"constant": false,
- "inputs": [],
- "name": "repayBorrow",
- "outputs": [],
- "payable": true,
- "stateMutability": "payable",
- "type": "function",
- "signature": "0x4e4d9fea"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "comptroller",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "address"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x5fe3b567"
+ "signature": "0xa9059cbb"
},
{
"constant": false,
"inputs": [
{
- "name": "reduceAmount",
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "_reduceReserves",
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x601a0bf1"
+ "signature": "0x23b872dd"
},
{
"constant": true,
"inputs": [],
- "name": "initialExchangeRateMantissa",
+ "name": "underlying",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x675d972c"
+ "signature": "0x6f307dc3"
+ }
+ ],
+ "Timelock": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "admin_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "delay_",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": true,
- "inputs": [],
- "name": "accrualBlockNumber",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "txHash",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "target",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "signature",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "CancelTransaction",
+ "type": "event",
+ "signature": "0x2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf87"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "txHash",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "target",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "string",
+ "name": "signature",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "eta",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x6c540baf"
+ "name": "ExecuteTransaction",
+ "type": "event",
+ "signature": "0xa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e7"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "owner",
+ "indexed": true,
+ "internalType": "address",
+ "name": "newAdmin",
"type": "address"
}
],
- "name": "balanceOf",
- "outputs": [
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0x71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "newDelay",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x70a08231"
+ "name": "NewDelay",
+ "type": "event",
+ "signature": "0x948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c"
},
{
- "constant": false,
- "inputs": [],
- "name": "totalBorrowsCurrent",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "uint256"
+ "indexed": true,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x73acee98"
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0x69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a756"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "redeemAmount",
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "txHash",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "target",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
- }
- ],
- "name": "redeemUnderlying",
- "outputs": [
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "string",
+ "name": "signature",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "eta",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x852a12e3"
+ "name": "QueueTransaction",
+ "type": "event",
+ "signature": "0x76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
},
{
"constant": true,
"inputs": [],
- "name": "totalReserves",
+ "name": "GRACE_PERIOD",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8022,34 +18678,31 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x8f840ddd"
+ "signature": "0xc1a287e2"
},
{
"constant": true,
"inputs": [],
- "name": "symbol",
+ "name": "MAXIMUM_DELAY",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x7d645fab"
},
{
"constant": true,
- "inputs": [
- {
- "name": "account",
- "type": "address"
- }
- ],
- "name": "borrowBalanceStored",
+ "inputs": [],
+ "name": "MINIMUM_DELAY",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8057,53 +18710,77 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95dd9193"
+ "signature": "0xb1b43ae5"
},
{
"constant": false,
"inputs": [],
- "name": "accrueInterest",
+ "name": "acceptAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x0e18b681"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xa6afed95"
+ "signature": "0xf851a440"
},
{
"constant": false,
"inputs": [
{
- "name": "dst",
+ "internalType": "address",
+ "name": "target",
"type": "address"
},
{
- "name": "amount",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
- }
- ],
- "name": "transfer",
- "outputs": [
+ },
{
- "name": "",
- "type": "bool"
+ "internalType": "string",
+ "name": "signature",
+ "type": "string"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
}
],
+ "name": "cancelTransaction",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0x591fcdfe"
},
{
"constant": true,
"inputs": [],
- "name": "borrowIndex",
+ "name": "delay",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8111,192 +18788,294 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xaa5af0fd"
+ "signature": "0x6a42b8f8"
},
{
"constant": false,
"inputs": [
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "target",
"type": "address"
},
{
- "name": "cTokenCollateral",
- "type": "address"
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "signature",
+ "type": "string"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
+ "type": "uint256"
+ }
+ ],
+ "name": "executeTransaction",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
}
],
- "name": "liquidateBorrow",
- "outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function",
- "signature": "0xaae40a2a"
+ "signature": "0x0825f38f"
},
{
"constant": true,
"inputs": [],
- "name": "supplyRatePerBlock",
+ "name": "pendingAdmin",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xae9d70b0"
+ "signature": "0x26782247"
},
{
"constant": false,
"inputs": [
{
- "name": "liquidator",
+ "internalType": "address",
+ "name": "target",
"type": "address"
},
{
- "name": "borrower",
- "type": "address"
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
},
{
- "name": "seizeTokens",
+ "internalType": "string",
+ "name": "signature",
+ "type": "string"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "eta",
"type": "uint256"
}
],
- "name": "seize",
+ "name": "queueTransaction",
"outputs": [
{
+ "internalType": "bytes32",
"name": "",
- "type": "uint256"
+ "type": "bytes32"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xb2a02ff1"
+ "signature": "0x3a66f901"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
}
],
- "name": "_setPendingAdmin",
+ "name": "queuedTransactions",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0xf2b06537"
},
{
"constant": false,
- "inputs": [],
- "name": "exchangeRateCurrent",
- "outputs": [
+ "inputs": [
{
- "name": "",
+ "internalType": "uint256",
+ "name": "delay_",
"type": "uint256"
}
],
+ "name": "setDelay",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xbd6d894d"
+ "signature": "0xe177246e"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "pendingAdmin_",
"type": "address"
}
],
- "name": "getAccountSnapshot",
- "outputs": [
+ "name": "setPendingAdmin",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4dd18bf5"
+ }
+ ],
+ "Base200bps_Slope3000bps": [
+ {
+ "inputs": [
{
- "name": "",
+ "internalType": "uint256",
+ "name": "baseRatePerYear",
"type": "uint256"
},
{
- "name": "",
+ "internalType": "uint256",
+ "name": "multiplierPerYear",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "baseRatePerBlock",
"type": "uint256"
},
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "multiplierPerBlock",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xc37f68e2"
+ "name": "NewInterestParams",
+ "type": "event",
+ "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "baseRatePerBlock",
+ "outputs": [
{
- "name": "borrowAmount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "borrow",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf14039de"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "blocksPerYear",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xc5ebeaec"
+ "signature": "0xa385fb96"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "redeemTokens",
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
"type": "uint256"
}
],
- "name": "redeem",
+ "name": "getBorrowRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xdb006a75"
+ "signature": "0x15f24053"
},
{
"constant": true,
"inputs": [
{
- "name": "owner",
- "type": "address"
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
},
{
- "name": "spender",
- "type": "address"
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserveFactorMantissa",
+ "type": "uint256"
}
],
- "name": "allowance",
+ "name": "getSupplyRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8304,236 +19083,420 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0xb8168816"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "isInterestRateModel",
+ "outputs": [
{
- "name": "borrower",
- "type": "address"
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
- "name": "repayBorrowBehalf",
- "outputs": [],
- "payable": true,
- "stateMutability": "payable",
+ "payable": false,
+ "stateMutability": "view",
"type": "function",
- "signature": "0xe5974619"
+ "signature": "0x2191f92a"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "_acceptAdmin",
+ "name": "multiplierPerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0x8726bb89"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "newInterestRateModel",
- "type": "address"
+ "internalType": "uint256",
+ "name": "cash",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "borrows",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reserves",
+ "type": "uint256"
}
],
- "name": "_setInterestRateModel",
+ "name": "utilizationRate",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "pure",
"type": "function",
- "signature": "0xf2b3abbd"
- },
+ "signature": "0x6e71e2d8"
+ }
+ ],
+ "cREP": [
{
- "constant": true,
- "inputs": [],
- "name": "interestRateModel",
- "outputs": [
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "underlying_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
+ },
+ {
+ "internalType": "address payable",
+ "name": "admin_",
"type": "address"
}
],
"payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf3fdb15a"
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": true,
- "inputs": [],
- "name": "admin",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "interestAccumulated",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowIndex",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf851a440"
+ "name": "AccrueInterest",
+ "type": "event",
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
},
{
- "constant": true,
- "inputs": [],
- "name": "borrowRatePerBlock",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf8f9da28"
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "newReserveFactorMantissa",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "_setReserveFactor",
- "outputs": [
+ "name": "Borrow",
+ "type": "event",
+ "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xfca7820b"
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
- "constant": true,
- "inputs": [],
- "name": "isCToken",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "bool"
+ "indexed": false,
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "cTokenCollateral",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xfe9c44ae"
+ "name": "LiquidateBorrow",
+ "type": "event",
+ "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
},
{
+ "anonymous": false,
"inputs": [
{
- "name": "comptroller_",
- "type": "address"
- },
- {
- "name": "interestRateModel_",
+ "indexed": false,
+ "internalType": "address",
+ "name": "minter",
"type": "address"
},
{
- "name": "initialExchangeRateMantissa_",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintAmount",
"type": "uint256"
},
{
- "name": "name_",
- "type": "string"
- },
- {
- "name": "symbol_",
- "type": "string"
- },
- {
- "name": "decimals_",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
},
{
- "payable": true,
- "stateMutability": "payable",
- "type": "fallback"
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "interestAccumulated",
- "type": "uint256"
+ "internalType": "contract ComptrollerInterface",
+ "name": "oldComptroller",
+ "type": "address"
},
{
"indexed": false,
- "name": "borrowIndex",
- "type": "uint256"
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
+ "type": "address"
+ }
+ ],
+ "name": "NewComptroller",
+ "type": "event",
+ "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "oldInterestRateModel",
+ "type": "address"
},
{
"indexed": false,
- "name": "totalBorrows",
- "type": "uint256"
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
}
],
- "name": "AccrueInterest",
+ "name": "NewMarketInterestRateModel",
"type": "event",
- "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+ "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "minter",
+ "internalType": "address",
+ "name": "oldPendingAdmin",
"type": "address"
},
{
"indexed": false,
- "name": "mintAmount",
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
"type": "uint256"
},
{
"indexed": false,
- "name": "mintTokens",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "Mint",
+ "name": "NewReserveFactor",
"type": "event",
- "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
+ "internalType": "address",
"name": "redeemer",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "redeemAmount",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "redeemTokens",
"type": "uint256"
}
@@ -8547,302 +19510,468 @@
"inputs": [
{
"indexed": false,
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
"indexed": false,
- "name": "borrowAmount",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "accountBorrows",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "totalBorrows",
"type": "uint256"
}
],
- "name": "Borrow",
+ "name": "RepayBorrow",
"type": "event",
- "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "payer",
+ "internalType": "address",
+ "name": "benefactor",
"type": "address"
},
{
"indexed": false,
- "name": "borrower",
- "type": "address"
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
},
{
"indexed": false,
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
+ }
+ ],
+ "name": "ReservesAdded",
+ "type": "event",
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "admin",
+ "type": "address"
},
{
"indexed": false,
- "name": "accountBorrows",
+ "internalType": "uint256",
+ "name": "reduceAmount",
"type": "uint256"
},
{
"indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
}
],
- "name": "RepayBorrow",
+ "name": "ReservesReduced",
"type": "event",
- "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "liquidator",
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
"type": "address"
},
{
- "indexed": false,
- "name": "borrower",
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
"type": "address"
},
{
"indexed": false,
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "_acceptAdmin",
+ "outputs": [
{
- "indexed": false,
- "name": "cTokenCollateral",
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xe9c714f2"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_addReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3e941010"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "_reduceReserves",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x601a0bf1"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
"type": "address"
- },
+ }
+ ],
+ "name": "_setComptroller",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x4576b5db"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
+ }
+ ],
+ "name": "_setInterestRateModel",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf2b3abbd"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
+ "outputs": [
{
- "indexed": false,
- "name": "seizeTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "LiquidateBorrow",
- "type": "event",
- "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb71d1a0c"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldPendingAdmin",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "_setReserveFactor",
+ "outputs": [
{
- "indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewPendingAdmin",
- "type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xfca7820b"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldAdmin",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "accrualBlockNumber",
+ "outputs": [
{
- "indexed": false,
- "name": "newAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewAdmin",
- "type": "event",
- "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6c540baf"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": false,
+ "inputs": [],
+ "name": "accrueInterest",
+ "outputs": [
{
- "indexed": false,
- "name": "oldComptroller",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa6afed95"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
{
- "indexed": false,
- "name": "newComptroller",
+ "internalType": "address payable",
+ "name": "",
"type": "address"
}
],
- "name": "NewComptroller",
- "type": "event",
- "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
},
{
- "anonymous": false,
+ "constant": true,
"inputs": [
{
- "indexed": false,
- "name": "oldInterestRateModel",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "indexed": false,
- "name": "newInterestRateModel",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
}
],
- "name": "NewMarketInterestRateModel",
- "type": "event",
- "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdd62ed3e"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldReserveFactorMantissa",
- "type": "uint256"
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
},
{
- "indexed": false,
- "name": "newReserveFactorMantissa",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "NewReserveFactor",
- "type": "event",
- "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x095ea7b3"
},
{
- "anonymous": false,
+ "constant": true,
"inputs": [
{
- "indexed": false,
- "name": "admin",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
- },
- {
- "indexed": false,
- "name": "reduceAmount",
- "type": "uint256"
- },
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
{
- "indexed": false,
- "name": "newTotalReserves",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "ReservesReduced",
- "type": "event",
- "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "error",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "info",
- "type": "uint256"
- },
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOfUnderlying",
+ "outputs": [
{
- "indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3af9e669"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": true,
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "name": "to",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "borrow",
+ "outputs": [
{
- "indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Transfer",
- "type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xc5ebeaec"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": true,
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "name": "spender",
+ "internalType": "address",
+ "name": "account",
"type": "address"
- },
+ }
+ ],
+ "name": "borrowBalanceCurrent",
+ "outputs": [
{
- "indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- }
- ],
- "Base500bps_Slope1200bps": [
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x17bfdfbc"
+ },
{
"constant": true,
"inputs": [
{
- "name": "cash",
- "type": "uint256"
- },
- {
- "name": "borrows",
- "type": "uint256"
- },
- {
- "name": "_reserves",
- "type": "uint256"
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
}
],
- "name": "getBorrowRate",
+ "name": "borrowBalanceStored",
"outputs": [
{
- "name": "",
- "type": "uint256"
- },
- {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8850,14 +19979,15 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x15f24053"
+ "signature": "0x95dd9193"
},
{
"constant": true,
"inputs": [],
- "name": "multiplier",
+ "name": "borrowIndex",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8865,14 +19995,15 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x1b3ed722"
+ "signature": "0xaa5af0fd"
},
{
"constant": true,
"inputs": [],
- "name": "baseRate",
+ "name": "borrowRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8880,79 +20011,100 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x1f68f20a"
+ "signature": "0xf8f9da28"
},
{
"constant": true,
"inputs": [],
- "name": "isInterestRateModel",
+ "name": "comptroller",
"outputs": [
{
+ "internalType": "contract ComptrollerInterface",
"name": "",
- "type": "bool"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x2191f92a"
+ "signature": "0x5fe3b567"
},
{
"constant": true,
"inputs": [],
- "name": "blocksPerYear",
+ "name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
- "type": "uint256"
+ "type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xa385fb96"
+ "signature": "0x313ce567"
},
{
- "inputs": [
+ "constant": false,
+ "inputs": [],
+ "name": "exchangeRateCurrent",
+ "outputs": [
{
- "name": "baseRate_",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xbd6d894d"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "exchangeRateStored",
+ "outputs": [
{
- "name": "multiplier_",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- }
- ],
- "Base200bps_Slope3000bps": [
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x182df0f5"
+ },
{
"constant": true,
"inputs": [
{
- "name": "cash",
- "type": "uint256"
- },
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAccountSnapshot",
+ "outputs": [
{
- "name": "borrows",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
},
{
- "name": "_reserves",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- }
- ],
- "name": "getBorrowRate",
- "outputs": [
+ },
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
},
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8960,14 +20112,15 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x15f24053"
+ "signature": "0xc37f68e2"
},
{
"constant": true,
"inputs": [],
- "name": "multiplier",
+ "name": "getCash",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -8975,121 +20128,172 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x1b3ed722"
+ "signature": "0x3b1d21a2"
},
{
- "constant": true,
- "inputs": [],
- "name": "baseRate",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "underlying_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x1f68f20a"
+ "signature": "0x1a31d465"
},
{
- "constant": true,
- "inputs": [],
- "name": "isInterestRateModel",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
- "type": "bool"
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x2191f92a"
+ "signature": "0x99d8c1b4"
},
{
"constant": true,
"inputs": [],
- "name": "blocksPerYear",
+ "name": "interestRateModel",
"outputs": [
{
+ "internalType": "contract InterestRateModel",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xa385fb96"
+ "signature": "0xf3fdb15a"
},
- {
- "inputs": [
- {
- "name": "baseRate_",
- "type": "uint256"
- },
- {
- "name": "multiplier_",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
- }
- ],
- "cREP": [
{
"constant": true,
"inputs": [],
- "name": "name",
+ "name": "isCToken",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "string"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x06fdde03"
+ "signature": "0xfe9c44ae"
},
{
"constant": false,
"inputs": [
{
- "name": "spender",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "amount",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
+ },
+ {
+ "internalType": "contract CTokenInterface",
+ "name": "cTokenCollateral",
+ "type": "address"
}
],
- "name": "approve",
+ "name": "liquidateBorrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0xf5e3c462"
},
{
"constant": false,
"inputs": [
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "mintAmount",
"type": "uint256"
}
],
- "name": "repayBorrow",
+ "name": "mint",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9097,34 +20301,53 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x0e752702"
+ "signature": "0xa0712d68"
},
{
"constant": true,
"inputs": [],
- "name": "reserveFactorMantissa",
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x173b9904"
+ "signature": "0x06fdde03"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "pendingAdmin",
+ "outputs": [
+ {
+ "internalType": "address payable",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x26782247"
},
{
"constant": false,
"inputs": [
{
- "name": "account",
- "type": "address"
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
}
],
- "name": "borrowBalanceCurrent",
+ "name": "redeem",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9132,74 +20355,62 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x17bfdfbc"
+ "signature": "0xdb006a75"
},
{
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "uint256",
+ "name": "redeemAmount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x18160ddd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "exchangeRateStored",
+ "name": "redeemUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x182df0f5"
- },
- {
- "constant": false,
- "inputs": [
- {
- "name": "src",
- "type": "address"
- },
- {
- "name": "dst",
- "type": "address"
- },
+ "signature": "0x852a12e3"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "name": "amount",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "repayBorrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x0e752702"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "repayAmount",
"type": "uint256"
}
@@ -9207,6 +20418,7 @@
"name": "repayBorrowBehalf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9219,59 +20431,90 @@
{
"constant": true,
"inputs": [],
- "name": "pendingAdmin",
+ "name": "reserveFactorMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0x173b9904"
},
{
- "constant": true,
- "inputs": [],
- "name": "decimals",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "liquidator",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "seize",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x313ce567"
+ "signature": "0xb2a02ff1"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "supplyRatePerBlock",
+ "outputs": [
{
- "name": "owner",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "balanceOfUnderlying",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xae9d70b0"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x3af9e669"
+ "signature": "0x95d89b41"
},
{
"constant": true,
"inputs": [],
- "name": "getCash",
+ "name": "totalBorrows",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9279,19 +20522,15 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x3b1d21a2"
+ "signature": "0x47bd3718"
},
{
"constant": false,
- "inputs": [
- {
- "name": "newComptroller",
- "type": "address"
- }
- ],
- "name": "_setComptroller",
+ "inputs": [],
+ "name": "totalBorrowsCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9299,14 +20538,15 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x4576b5db"
+ "signature": "0x73acee98"
},
{
"constant": true,
"inputs": [],
- "name": "totalBorrows",
+ "name": "totalReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9314,72 +20554,82 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x47bd3718"
+ "signature": "0x8f840ddd"
},
{
"constant": true,
"inputs": [],
- "name": "comptroller",
+ "name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x5fe3b567"
+ "signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
- "name": "reduceAmount",
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "_reduceReserves",
+ "name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x601a0bf1"
+ "signature": "0xa9059cbb"
},
{
- "constant": true,
- "inputs": [],
- "name": "initialExchangeRateMantissa",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "src",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x675d972c"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "accrualBlockNumber",
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x6c540baf"
+ "signature": "0x23b872dd"
},
{
"constant": true,
@@ -9387,6 +20637,7 @@
"name": "underlying",
"outputs": [
{
+ "internalType": "address",
"name": "",
"type": "address"
}
@@ -9395,103 +20646,195 @@
"stateMutability": "view",
"type": "function",
"signature": "0x6f307dc3"
- },
+ }
+ ],
+ "WBTC": [
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
+ "indexed": true,
+ "internalType": "address",
"name": "owner",
"type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
}
],
- "name": "balanceOf",
- "outputs": [
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": true,
+ "internalType": "address",
+ "name": "burner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x70a08231"
+ "name": "Burn",
+ "type": "event",
+ "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5"
},
{
- "constant": false,
- "inputs": [],
- "name": "totalBorrowsCurrent",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x73acee98"
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885"
},
{
- "constant": false,
+ "anonymous": false,
+ "inputs": [],
+ "name": "MintFinished",
+ "type": "event",
+ "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08"
+ },
+ {
+ "anonymous": false,
"inputs": [
{
- "name": "redeemAmount",
- "type": "uint256"
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
}
],
- "name": "redeemUnderlying",
- "outputs": [
+ "name": "OwnershipRenounced",
+ "type": "event",
+ "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "uint256"
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x852a12e3"
+ "name": "OwnershipTransferred",
+ "type": "event",
+ "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [],
- "name": "totalReserves",
- "outputs": [
+ "name": "Pause",
+ "type": "event",
+ "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
{
- "name": "",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x8f840ddd"
+ "name": "Transfer",
+ "type": "event",
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [],
- "name": "symbol",
- "outputs": [
+ "name": "Unpause",
+ "type": "event",
+ "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "name": "",
- "type": "string"
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
}
],
+ "name": "allocateTo",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x08bca566"
},
{
"constant": true,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
}
],
- "name": "borrowBalanceStored",
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9499,297 +20842,277 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95dd9193"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
- "name": "mintAmount",
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "mint",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa0712d68"
+ "signature": "0x095ea7b3"
},
{
- "constant": false,
- "inputs": [],
- "name": "accrueInterest",
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xa6afed95"
+ "signature": "0x70a08231"
},
{
"constant": false,
"inputs": [
{
- "name": "dst",
- "type": "address"
- },
- {
- "name": "amount",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "transfer",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
+ "name": "burn",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0x42966c68"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "borrowIndex",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
+ "name": "claimOwnership",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xaa5af0fd"
+ "signature": "0x4e71e0c8"
},
{
"constant": true,
"inputs": [],
- "name": "supplyRatePerBlock",
+ "name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
- "type": "uint256"
+ "type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xae9d70b0"
+ "signature": "0x313ce567"
},
{
"constant": false,
"inputs": [
{
- "name": "liquidator",
- "type": "address"
- },
- {
- "name": "borrower",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "name": "seizeTokens",
- "type": "uint256"
- }
- ],
- "name": "seize",
- "outputs": [
- {
- "name": "",
+ "internalType": "uint256",
+ "name": "_subtractedValue",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xb2a02ff1"
- },
- {
- "constant": false,
- "inputs": [
- {
- "name": "newPendingAdmin",
- "type": "address"
- }
- ],
- "name": "_setPendingAdmin",
+ "name": "decreaseApproval",
"outputs": [
{
- "name": "",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0x66188463"
},
{
"constant": false,
"inputs": [],
- "name": "exchangeRateCurrent",
+ "name": "finishMinting",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xbd6d894d"
+ "signature": "0x7d64bcb4"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
- }
- ],
- "name": "getAccountSnapshot",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
},
{
- "name": "",
+ "internalType": "uint256",
+ "name": "_addedValue",
"type": "uint256"
- },
+ }
+ ],
+ "name": "increaseApproval",
+ "outputs": [
{
- "name": "",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc37f68e2"
+ "signature": "0xd73dd623"
},
{
"constant": false,
"inputs": [
{
- "name": "borrowAmount",
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_amount",
"type": "uint256"
}
],
- "name": "borrow",
+ "name": "mint",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xc5ebeaec"
+ "signature": "0x40c10f19"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "redeemTokens",
- "type": "uint256"
- }
- ],
- "name": "redeem",
+ "constant": true,
+ "inputs": [],
+ "name": "mintingFinished",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xdb006a75"
+ "signature": "0x05d2035b"
},
{
"constant": true,
- "inputs": [
- {
- "name": "owner",
- "type": "address"
- },
- {
- "name": "spender",
- "type": "address"
- }
- ],
- "name": "allowance",
+ "inputs": [],
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0x06fdde03"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "_acceptAdmin",
+ "name": "owner",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0x8da5cb5b"
},
{
"constant": false,
- "inputs": [
- {
- "name": "newInterestRateModel",
- "type": "address"
- }
- ],
- "name": "_setInterestRateModel",
+ "inputs": [],
+ "name": "pause",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x8456cb59"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "paused",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xf2b3abbd"
+ "signature": "0x5c975abb"
},
{
"constant": true,
"inputs": [],
- "name": "interestRateModel",
+ "name": "pendingOwner",
"outputs": [
{
+ "internalType": "address",
"name": "",
"type": "address"
}
@@ -9797,57 +21120,57 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf3fdb15a"
+ "signature": "0xe30c3978"
},
{
"constant": false,
"inputs": [
{
- "name": "borrower",
- "type": "address"
- },
- {
- "name": "repayAmount",
- "type": "uint256"
- },
- {
- "name": "cTokenCollateral",
+ "internalType": "contract ERC20Basic",
+ "name": "_token",
"type": "address"
}
],
- "name": "liquidateBorrow",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
+ "name": "reclaimToken",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf5e3c462"
+ "signature": "0x17ffc320"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x715018a6"
},
{
"constant": true,
"inputs": [],
- "name": "admin",
+ "name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "address"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf851a440"
+ "signature": "0x95d89b41"
},
{
"constant": true,
"inputs": [],
- "name": "borrowRatePerBlock",
+ "name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -9855,72 +21178,116 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf8f9da28"
+ "signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
- "name": "newReserveFactorMantissa",
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "_setReserveFactor",
+ "name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xfca7820b"
+ "signature": "0xa9059cbb"
},
{
- "constant": true,
- "inputs": [],
- "name": "isCToken",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xfe9c44ae"
+ "signature": "0x23b872dd"
},
{
+ "constant": false,
"inputs": [
{
- "name": "underlying_",
- "type": "address"
- },
- {
- "name": "comptroller_",
- "type": "address"
- },
- {
- "name": "interestRateModel_",
+ "internalType": "address",
+ "name": "newOwner",
"type": "address"
- },
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xf2fde38b"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "unpause",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x3f4ba83a"
+ }
+ ],
+ "SAI": [
+ {
+ "inputs": [
{
- "name": "initialExchangeRateMantissa_",
+ "internalType": "uint256",
+ "name": "_initialAmount",
"type": "uint256"
},
{
- "name": "name_",
+ "internalType": "string",
+ "name": "_tokenName",
"type": "string"
},
{
- "name": "symbol_",
- "type": "string"
+ "internalType": "uint8",
+ "name": "_decimalUnits",
+ "type": "uint8"
},
{
- "name": "decimals_",
- "type": "uint256"
+ "internalType": "string",
+ "name": "_tokenSymbol",
+ "type": "string"
}
],
"payable": false,
@@ -9932,387 +21299,420 @@
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "interestAccumulated",
- "type": "uint256"
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
},
{
- "indexed": false,
- "name": "borrowIndex",
- "type": "uint256"
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
},
{
"indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "AccrueInterest",
+ "name": "Approval",
"type": "event",
- "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "minter",
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
"type": "address"
},
{
- "indexed": false,
- "name": "mintAmount",
- "type": "uint256"
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
},
{
"indexed": false,
- "name": "mintTokens",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "Mint",
+ "name": "Transfer",
"type": "event",
- "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "redeemer",
+ "internalType": "address",
+ "name": "_owner",
"type": "address"
},
{
- "indexed": false,
- "name": "redeemAmount",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
+ }
+ ],
+ "name": "allocateTo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x08bca566"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
},
{
- "indexed": false,
- "name": "redeemTokens",
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Redeem",
- "type": "event",
- "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xdd62ed3e"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "borrower",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "indexed": false,
- "name": "borrowAmount",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
- },
+ }
+ ],
+ "name": "approve",
+ "outputs": [
{
- "indexed": false,
- "name": "accountBorrows",
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x095ea7b3"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x70a08231"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
{
- "indexed": false,
- "name": "totalBorrows",
- "type": "uint256"
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
}
],
- "name": "Borrow",
- "type": "event",
- "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x313ce567"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "payer",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrower",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "indexed": false,
- "name": "repayAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "accountBorrows",
+ "internalType": "uint256",
+ "name": "_subtractedValue",
"type": "uint256"
- },
+ }
+ ],
+ "name": "decreaseApproval",
+ "outputs": [
{
- "indexed": false,
- "name": "totalBorrows",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
- "name": "RepayBorrow",
- "type": "event",
- "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x66188463"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "liquidator",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrower",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "indexed": false,
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "_addedValue",
"type": "uint256"
- },
- {
- "indexed": false,
- "name": "cTokenCollateral",
- "type": "address"
- },
+ }
+ ],
+ "name": "increaseApproval",
+ "outputs": [
{
- "indexed": false,
- "name": "seizeTokens",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
- "name": "LiquidateBorrow",
- "type": "event",
- "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xd73dd623"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldPendingAdmin",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
{
- "indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
- "name": "NewPendingAdmin",
- "type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldAdmin",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
{
- "indexed": false,
- "name": "newAdmin",
- "type": "address"
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
- "name": "NewAdmin",
- "type": "event",
- "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldComptroller",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
{
- "indexed": false,
- "name": "newComptroller",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewComptroller",
- "type": "event",
- "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldInterestRateModel",
+ "internalType": "address",
+ "name": "_to",
"type": "address"
},
{
- "indexed": false,
- "name": "newInterestRateModel",
- "type": "address"
+ "internalType": "uint256",
+ "name": "_value",
+ "type": "uint256"
}
],
- "name": "NewMarketInterestRateModel",
- "type": "event",
- "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldReserveFactorMantissa",
- "type": "uint256"
- },
+ "name": "transfer",
+ "outputs": [
{
- "indexed": false,
- "name": "newReserveFactorMantissa",
- "type": "uint256"
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
- "name": "NewReserveFactor",
- "type": "event",
- "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa9059cbb"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "admin",
+ "internalType": "address",
+ "name": "_from",
"type": "address"
},
{
- "indexed": false,
- "name": "reduceAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
},
{
- "indexed": false,
- "name": "newTotalReserves",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "ReservesReduced",
- "type": "event",
- "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
- },
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x23b872dd"
+ }
+ ],
+ "REP": [
{
- "anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "error",
+ "internalType": "uint256",
+ "name": "_initialAmount",
"type": "uint256"
},
{
- "indexed": false,
- "name": "info",
- "type": "uint256"
+ "internalType": "string",
+ "name": "_tokenName",
+ "type": "string"
},
{
- "indexed": false,
- "name": "detail",
- "type": "uint256"
+ "internalType": "uint8",
+ "name": "_decimalUnits",
+ "type": "uint8"
+ },
+ {
+ "internalType": "string",
+ "name": "_tokenSymbol",
+ "type": "string"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
- "name": "from",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
"indexed": true,
- "name": "to",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
"indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "Transfer",
+ "name": "Approval",
"type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
- "name": "owner",
+ "internalType": "address",
+ "name": "from",
"type": "address"
},
{
"indexed": true,
- "name": "spender",
+ "internalType": "address",
+ "name": "to",
"type": "address"
},
{
"indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "Approval",
+ "name": "Transfer",
"type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- }
- ],
- "WBTC": [
- {
- "constant": true,
- "inputs": [],
- "name": "mintingFinished",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x05d2035b"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "name",
- "outputs": [
- {
- "name": "",
- "type": "string"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x06fdde03"
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "_owner",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "value",
"type": "uint256"
}
@@ -10325,86 +21725,80 @@
"signature": "0x08bca566"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "_spender",
+ "internalType": "address",
+ "name": "_owner",
"type": "address"
},
{
- "name": "_value",
- "type": "uint256"
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
}
],
- "name": "approve",
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x095ea7b3"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
- "name": "_token",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
+ "type": "uint256"
}
],
- "name": "reclaimToken",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x17ffc320"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x18160ddd"
+ "signature": "0x095ea7b3"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "_from",
- "type": "address"
- },
- {
- "name": "_to",
+ "internalType": "address",
+ "name": "_owner",
"type": "address"
- },
- {
- "name": "_value",
- "type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x70a08231"
},
{
"constant": true,
@@ -10412,6 +21806,7 @@
"name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
"type": "uint8"
}
@@ -10423,29 +21818,49 @@
},
{
"constant": false,
- "inputs": [],
- "name": "unpause",
- "outputs": [],
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_subtractedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "decreaseApproval",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x3f4ba83a"
+ "signature": "0x66188463"
},
{
"constant": false,
"inputs": [
{
- "name": "_to",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "name": "_amount",
+ "internalType": "uint256",
+ "name": "_addedValue",
"type": "uint256"
}
],
- "name": "mint",
+ "name": "increaseApproval",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -10453,108 +21868,106 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x40c10f19"
+ "signature": "0xd73dd623"
},
{
- "constant": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
{
- "name": "value",
- "type": "uint256"
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
- "name": "burn",
- "outputs": [],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x42966c68"
+ "signature": "0x06fdde03"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "claimOwnership",
- "outputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x4e71e0c8"
+ "signature": "0x95d89b41"
},
{
"constant": true,
"inputs": [],
- "name": "paused",
+ "name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x5c975abb"
+ "signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
- "name": "_spender",
+ "internalType": "address",
+ "name": "_to",
"type": "address"
},
{
- "name": "_subtractedValue",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "decreaseApproval",
+ "name": "transfer",
"outputs": [
{
- "name": "success",
+ "internalType": "bool",
+ "name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x66188463"
+ "signature": "0xa9059cbb"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "_owner",
+ "internalType": "address",
+ "name": "_from",
"type": "address"
- }
- ],
- "name": "balanceOf",
- "outputs": [
+ },
{
- "name": "",
+ "internalType": "address",
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x70a08231"
- },
- {
- "constant": false,
- "inputs": [],
- "name": "renounceOwnership",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x715018a6"
- },
- {
- "constant": false,
- "inputs": [],
- "name": "finishMinting",
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -10562,524 +21975,635 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x7d64bcb4"
- },
- {
- "constant": false,
- "inputs": [],
- "name": "pause",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x8456cb59"
- },
+ "signature": "0x23b872dd"
+ }
+ ],
+ "cZRX": [
{
- "constant": true,
- "inputs": [],
- "name": "owner",
- "outputs": [
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "underlying_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
{
- "name": "",
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
+ },
+ {
+ "internalType": "address payable",
+ "name": "admin_",
"type": "address"
}
],
"payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x8da5cb5b"
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
- "constant": true,
- "inputs": [],
- "name": "symbol",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
- "type": "string"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "interestAccumulated",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowIndex",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x95d89b41"
+ "name": "AccrueInterest",
+ "type": "event",
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "_to",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "name": "_value",
- "type": "uint256"
- }
- ],
- "name": "transfer",
- "outputs": [
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
{
- "name": "",
- "type": "bool"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xa9059cbb"
+ "name": "Approval",
+ "type": "event",
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "_spender",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "_addedValue",
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "increaseApproval",
- "outputs": [
+ "name": "Borrow",
+ "type": "event",
+ "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "success",
- "type": "bool"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "error",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "info",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "detail",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xd73dd623"
+ "name": "Failure",
+ "type": "event",
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
- "constant": true,
+ "anonymous": false,
"inputs": [
{
- "name": "_owner",
+ "indexed": false,
+ "internalType": "address",
+ "name": "liquidator",
"type": "address"
},
{
- "name": "_spender",
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "cTokenCollateral",
"type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "seizeTokens",
+ "type": "uint256"
}
],
- "name": "allowance",
- "outputs": [
+ "name": "LiquidateBorrow",
+ "type": "event",
+ "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "minter",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
"type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xdd62ed3e"
+ "name": "Mint",
+ "type": "event",
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
},
{
- "constant": true,
- "inputs": [],
- "name": "pendingOwner",
- "outputs": [
+ "anonymous": false,
+ "inputs": [
{
- "name": "",
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newAdmin",
"type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xe30c3978"
+ "name": "NewAdmin",
+ "type": "event",
+ "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
},
{
- "constant": false,
+ "anonymous": false,
"inputs": [
{
- "name": "newOwner",
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "oldComptroller",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
"type": "address"
}
],
- "name": "transferOwnership",
- "outputs": [],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xf2fde38b"
+ "name": "NewComptroller",
+ "type": "event",
+ "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
},
{
"anonymous": false,
- "inputs": [],
- "name": "Pause",
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "oldInterestRateModel",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
+ "type": "address"
+ }
+ ],
+ "name": "NewMarketInterestRateModel",
"type": "event",
- "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625"
+ "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
},
{
"anonymous": false,
- "inputs": [],
- "name": "Unpause",
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldPendingAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
"type": "event",
- "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33"
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": true,
- "name": "burner",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
+ "type": "uint256"
},
{
"indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "Burn",
+ "name": "NewReserveFactor",
"type": "event",
- "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5"
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": true,
- "name": "to",
+ "indexed": false,
+ "internalType": "address",
+ "name": "redeemer",
"type": "address"
},
{
"indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemTokens",
"type": "uint256"
}
],
- "name": "Mint",
- "type": "event",
- "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885"
- },
- {
- "anonymous": false,
- "inputs": [],
- "name": "MintFinished",
+ "name": "Redeem",
"type": "event",
- "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08"
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": true,
- "name": "previousOwner",
+ "indexed": false,
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "totalBorrows",
+ "type": "uint256"
}
],
- "name": "OwnershipRenounced",
+ "name": "RepayBorrow",
"type": "event",
- "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820"
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": true,
- "name": "previousOwner",
+ "indexed": false,
+ "internalType": "address",
+ "name": "benefactor",
"type": "address"
},
{
- "indexed": true,
- "name": "newOwner",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "addAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newTotalReserves",
+ "type": "uint256"
}
],
- "name": "OwnershipTransferred",
+ "name": "ReservesAdded",
"type": "event",
- "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": true,
- "name": "owner",
+ "indexed": false,
+ "internalType": "address",
+ "name": "admin",
"type": "address"
},
{
- "indexed": true,
- "name": "spender",
- "type": "address"
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "reduceAmount",
+ "type": "uint256"
},
{
"indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
}
],
- "name": "Approval",
+ "name": "ReservesReduced",
"type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
+ "internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
+ "internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
- }
- ],
- "REP": [
+ },
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "name",
+ "name": "_acceptAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x06fdde03"
- },
- {
- "constant": false,
- "inputs": [
- {
- "name": "_owner",
- "type": "address"
- },
- {
- "name": "value",
"type": "uint256"
}
],
- "name": "allocateTo",
- "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x08bca566"
+ "signature": "0xe9c714f2"
},
{
"constant": false,
"inputs": [
{
- "name": "_spender",
- "type": "address"
- },
- {
- "name": "_value",
+ "internalType": "uint256",
+ "name": "addAmount",
"type": "uint256"
}
],
- "name": "approve",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x095ea7b3"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
+ "name": "_addReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x18160ddd"
+ "signature": "0x3e941010"
},
{
"constant": false,
"inputs": [
{
- "name": "_from",
- "type": "address"
- },
- {
- "name": "_to",
- "type": "address"
- },
- {
- "name": "_value",
+ "internalType": "uint256",
+ "name": "reduceAmount",
"type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "_reduceReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x23b872dd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "decimals",
- "outputs": [
- {
- "name": "",
- "type": "uint8"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x313ce567"
+ "signature": "0x601a0bf1"
},
{
"constant": false,
"inputs": [
{
- "name": "_spender",
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
"type": "address"
- },
- {
- "name": "_subtractedValue",
- "type": "uint256"
}
],
- "name": "decreaseApproval",
+ "name": "_setComptroller",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x66188463"
+ "signature": "0x4576b5db"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "_owner",
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
"type": "address"
}
],
- "name": "balanceOf",
+ "name": "_setInterestRateModel",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x70a08231"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "symbol",
- "outputs": [
- {
- "name": "",
- "type": "string"
- }
- ],
- "payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0xf2b3abbd"
},
{
"constant": false,
"inputs": [
{
- "name": "_to",
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
"type": "address"
- },
- {
- "name": "_value",
- "type": "uint256"
}
],
- "name": "transfer",
+ "name": "_setPendingAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0xb71d1a0c"
},
{
"constant": false,
"inputs": [
{
- "name": "_spender",
- "type": "address"
- },
- {
- "name": "_addedValue",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "increaseApproval",
+ "name": "_setReserveFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xd73dd623"
+ "signature": "0xfca7820b"
},
{
"constant": true,
- "inputs": [
- {
- "name": "_owner",
- "type": "address"
- },
- {
- "name": "_spender",
- "type": "address"
- }
- ],
- "name": "allowance",
+ "inputs": [],
+ "name": "accrualBlockNumber",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11087,103 +22611,77 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0x6c540baf"
},
{
- "inputs": [
- {
- "name": "_initialAmount",
- "type": "uint256"
- },
- {
- "name": "_tokenName",
- "type": "string"
- },
- {
- "name": "_decimalUnits",
- "type": "uint8"
- },
+ "constant": false,
+ "inputs": [],
+ "name": "accrueInterest",
+ "outputs": [
{
- "name": "_tokenSymbol",
- "type": "string"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
+ "type": "function",
+ "signature": "0xa6afed95"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "name": "owner",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "admin",
+ "outputs": [
{
- "indexed": true,
- "name": "spender",
+ "internalType": "address payable",
+ "name": "",
"type": "address"
- },
- {
- "indexed": false,
- "name": "value",
- "type": "uint256"
}
],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xf851a440"
},
{
- "anonymous": false,
+ "constant": true,
"inputs": [
{
- "indexed": true,
- "name": "from",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "indexed": true,
- "name": "to",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
- },
- {
- "indexed": false,
- "name": "value",
- "type": "uint256"
}
],
- "name": "Transfer",
- "type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
- }
- ],
- "cZRX": [
- {
- "constant": true,
- "inputs": [],
- "name": "name",
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x06fdde03"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "spender",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "amount",
"type": "uint256"
}
@@ -11191,6 +22689,7 @@
"name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -11201,51 +22700,62 @@
"signature": "0x095ea7b3"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "repayAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
}
],
- "name": "repayBorrow",
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x0e752702"
+ "signature": "0x70a08231"
},
{
- "constant": true,
- "inputs": [],
- "name": "reserveFactorMantissa",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOfUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x173b9904"
+ "signature": "0x3af9e669"
},
{
"constant": false,
"inputs": [
{
- "name": "account",
- "type": "address"
+ "internalType": "uint256",
+ "name": "borrowAmount",
+ "type": "uint256"
}
],
- "name": "borrowBalanceCurrent",
+ "name": "borrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11253,96 +22763,91 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x17bfdfbc"
+ "signature": "0xc5ebeaec"
},
{
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
- "type": "uint256"
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x18160ddd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "exchangeRateStored",
+ "name": "borrowBalanceCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x182df0f5"
+ "signature": "0x17bfdfbc"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "src",
- "type": "address"
- },
- {
- "name": "dst",
+ "internalType": "address",
+ "name": "account",
"type": "address"
- },
- {
- "name": "amount",
- "type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "borrowBalanceStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x95dd9193"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "borrower",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "borrowIndex",
+ "outputs": [
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "repayBorrowBehalf",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xaa5af0fd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "borrowRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x2608f818"
+ "signature": "0xf8f9da28"
},
{
"constant": true,
"inputs": [],
- "name": "pendingAdmin",
+ "name": "comptroller",
"outputs": [
{
+ "internalType": "contract ComptrollerInterface",
"name": "",
"type": "address"
}
@@ -11350,7 +22855,7 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x26782247"
+ "signature": "0x5fe3b567"
},
{
"constant": true,
@@ -11358,8 +22863,9 @@
"name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
- "type": "uint256"
+ "type": "uint8"
}
],
"payable": false,
@@ -11369,15 +22875,11 @@
},
{
"constant": false,
- "inputs": [
- {
- "name": "owner",
- "type": "address"
- }
- ],
- "name": "balanceOfUnderlying",
+ "inputs": [],
+ "name": "exchangeRateCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11385,14 +22887,15 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x3af9e669"
+ "signature": "0xbd6d894d"
},
{
"constant": true,
"inputs": [],
- "name": "getCash",
+ "name": "exchangeRateStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11400,34 +22903,36 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x3b1d21a2"
+ "signature": "0x182df0f5"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "newComptroller",
+ "internalType": "address",
+ "name": "account",
"type": "address"
}
],
- "name": "_setComptroller",
+ "name": "getAccountSnapshot",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x4576b5db"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "totalBorrows",
- "outputs": [
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11435,114 +22940,166 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x47bd3718"
+ "signature": "0xc37f68e2"
},
{
"constant": true,
"inputs": [],
- "name": "comptroller",
+ "name": "getCash",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x5fe3b567"
+ "signature": "0x3b1d21a2"
},
{
"constant": false,
"inputs": [
{
- "name": "reduceAmount",
- "type": "uint256"
- }
- ],
- "name": "_reduceReserves",
- "outputs": [
+ "internalType": "address",
+ "name": "underlying_",
+ "type": "address"
+ },
{
- "name": "",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x601a0bf1"
+ "signature": "0x1a31d465"
},
{
- "constant": true,
- "inputs": [],
- "name": "initialExchangeRateMantissa",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x675d972c"
+ "signature": "0x99d8c1b4"
},
{
"constant": true,
"inputs": [],
- "name": "accrualBlockNumber",
+ "name": "interestRateModel",
"outputs": [
{
+ "internalType": "contract InterestRateModel",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x6c540baf"
+ "signature": "0xf3fdb15a"
},
{
"constant": true,
"inputs": [],
- "name": "underlying",
+ "name": "isCToken",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "address"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x6f307dc3"
+ "signature": "0xfe9c44ae"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "owner",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
- }
- ],
- "name": "balanceOf",
- "outputs": [
+ },
{
- "name": "",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
+ },
+ {
+ "internalType": "contract CTokenInterface",
+ "name": "cTokenCollateral",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x70a08231"
- },
- {
- "constant": false,
- "inputs": [],
- "name": "totalBorrowsCurrent",
+ "name": "liquidateBorrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11550,19 +23107,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x73acee98"
+ "signature": "0xf5e3c462"
},
{
"constant": false,
"inputs": [
{
- "name": "redeemAmount",
+ "internalType": "uint256",
+ "name": "mintAmount",
"type": "uint256"
}
],
- "name": "redeemUnderlying",
+ "name": "mint",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11570,69 +23129,75 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x852a12e3"
+ "signature": "0xa0712d68"
},
{
"constant": true,
"inputs": [],
- "name": "totalReserves",
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x8f840ddd"
+ "signature": "0x06fdde03"
},
{
"constant": true,
"inputs": [],
- "name": "symbol",
+ "name": "pendingAdmin",
"outputs": [
{
+ "internalType": "address payable",
"name": "",
- "type": "string"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x26782247"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
- "type": "address"
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
}
],
- "name": "borrowBalanceStored",
+ "name": "redeem",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x95dd9193"
+ "signature": "0xdb006a75"
},
{
"constant": false,
"inputs": [
{
- "name": "mintAmount",
+ "internalType": "uint256",
+ "name": "redeemAmount",
"type": "uint256"
}
],
- "name": "mint",
+ "name": "redeemUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11640,14 +23205,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa0712d68"
+ "signature": "0x852a12e3"
},
{
"constant": false,
- "inputs": [],
- "name": "accrueInterest",
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "repayBorrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11655,53 +23227,42 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa6afed95"
+ "signature": "0x0e752702"
},
{
"constant": false,
"inputs": [
{
- "name": "dst",
+ "internalType": "address",
+ "name": "borrower",
"type": "address"
},
{
- "name": "amount",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
}
],
- "name": "transfer",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xa9059cbb"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "borrowIndex",
+ "name": "repayBorrowBehalf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xaa5af0fd"
+ "signature": "0x2608f818"
},
{
"constant": true,
"inputs": [],
- "name": "supplyRatePerBlock",
+ "name": "reserveFactorMantissa",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11709,20 +23270,23 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xae9d70b0"
+ "signature": "0x173b9904"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "liquidator",
"type": "address"
},
{
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "seizeTokens",
"type": "uint256"
}
@@ -11730,6 +23294,7 @@
"name": "seize",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11740,127 +23305,44 @@
"signature": "0xb2a02ff1"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "newPendingAdmin",
- "type": "address"
- }
- ],
- "name": "_setPendingAdmin",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xb71d1a0c"
- },
- {
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "exchangeRateCurrent",
+ "name": "supplyRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xbd6d894d"
+ "signature": "0xae9d70b0"
},
{
"constant": true,
- "inputs": [
- {
- "name": "account",
- "type": "address"
- }
- ],
- "name": "getAccountSnapshot",
+ "inputs": [],
+ "name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
- "type": "function",
- "signature": "0xc37f68e2"
- },
- {
- "constant": false,
- "inputs": [
- {
- "name": "borrowAmount",
- "type": "uint256"
- }
- ],
- "name": "borrow",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xc5ebeaec"
- },
- {
- "constant": false,
- "inputs": [
- {
- "name": "redeemTokens",
- "type": "uint256"
- }
- ],
- "name": "redeem",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xdb006a75"
- },
- {
- "constant": true,
- "inputs": [
- {
- "name": "owner",
- "type": "address"
- },
- {
- "name": "spender",
- "type": "address"
- }
- ],
- "name": "allowance",
+ "type": "function",
+ "signature": "0x95d89b41"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11868,14 +23350,15 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0x47bd3718"
},
{
"constant": false,
"inputs": [],
- "name": "_acceptAdmin",
+ "name": "totalBorrowsCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -11883,165 +23366,158 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0x73acee98"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "newInterestRateModel",
- "type": "address"
- }
- ],
- "name": "_setInterestRateModel",
+ "constant": true,
+ "inputs": [],
+ "name": "totalReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xf2b3abbd"
+ "signature": "0x8f840ddd"
},
{
"constant": true,
"inputs": [],
- "name": "interestRateModel",
+ "name": "totalSupply",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xf3fdb15a"
+ "signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
- "name": "borrower",
+ "internalType": "address",
+ "name": "dst",
"type": "address"
},
{
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
- },
- {
- "name": "cTokenCollateral",
- "type": "address"
}
],
- "name": "liquidateBorrow",
+ "name": "transfer",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf5e3c462"
+ "signature": "0xa9059cbb"
},
{
- "constant": true,
- "inputs": [],
- "name": "admin",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "address",
+ "name": "src",
"type": "address"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf851a440"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "borrowRatePerBlock",
- "outputs": [
+ },
{
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf8f9da28"
- },
- {
- "constant": false,
- "inputs": [
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
+ },
{
- "name": "newReserveFactorMantissa",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "_setReserveFactor",
+ "name": "transferFrom",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xfca7820b"
+ "signature": "0x23b872dd"
},
{
"constant": true,
"inputs": [],
- "name": "isCToken",
+ "name": "underlying",
"outputs": [
{
+ "internalType": "address",
"name": "",
- "type": "bool"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xfe9c44ae"
- },
+ "signature": "0x6f307dc3"
+ }
+ ],
+ "cWBTC": [
{
"inputs": [
{
+ "internalType": "address",
"name": "underlying_",
"type": "address"
},
{
+ "internalType": "contract ComptrollerInterface",
"name": "comptroller_",
"type": "address"
},
{
+ "internalType": "contract InterestRateModel",
"name": "interestRateModel_",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "initialExchangeRateMantissa_",
"type": "uint256"
},
{
+ "internalType": "string",
"name": "name_",
"type": "string"
},
{
+ "internalType": "string",
"name": "symbol_",
"type": "string"
},
{
+ "internalType": "uint8",
"name": "decimals_",
- "type": "uint256"
+ "type": "uint8"
+ },
+ {
+ "internalType": "address payable",
+ "name": "admin_",
+ "type": "address"
}
],
"payable": false,
@@ -12054,90 +23530,83 @@
"inputs": [
{
"indexed": false,
+ "internalType": "uint256",
+ "name": "cashPrior",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
"name": "interestAccumulated",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "borrowIndex",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "totalBorrows",
"type": "uint256"
}
],
"name": "AccrueInterest",
"type": "event",
- "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+ "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
},
{
"anonymous": false,
"inputs": [
{
- "indexed": false,
- "name": "minter",
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
- "indexed": false,
- "name": "mintAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "mintTokens",
- "type": "uint256"
- }
- ],
- "name": "Mint",
- "type": "event",
- "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "redeemer",
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
"indexed": false,
- "name": "redeemAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "redeemTokens",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "Redeem",
+ "name": "Approval",
"type": "event",
- "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "borrowAmount",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "accountBorrows",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "totalBorrows",
"type": "uint256"
}
@@ -12151,59 +23620,57 @@
"inputs": [
{
"indexed": false,
- "name": "payer",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrower",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "error",
"type": "uint256"
},
{
"indexed": false,
- "name": "accountBorrows",
+ "internalType": "uint256",
+ "name": "info",
"type": "uint256"
},
{
"indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "detail",
"type": "uint256"
}
],
- "name": "RepayBorrow",
+ "name": "Failure",
"type": "event",
- "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
+ "internalType": "address",
"name": "liquidator",
"type": "address"
},
{
"indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "repayAmount",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "address",
"name": "cTokenCollateral",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "seizeTokens",
"type": "uint256"
}
@@ -12217,29 +23684,39 @@
"inputs": [
{
"indexed": false,
- "name": "oldPendingAdmin",
+ "internalType": "address",
+ "name": "minter",
"type": "address"
},
{
"indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "mintTokens",
+ "type": "uint256"
}
],
- "name": "NewPendingAdmin",
+ "name": "Mint",
"type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
+ "internalType": "address",
"name": "oldAdmin",
"type": "address"
},
{
"indexed": false,
+ "internalType": "address",
"name": "newAdmin",
"type": "address"
}
@@ -12253,11 +23730,13 @@
"inputs": [
{
"indexed": false,
+ "internalType": "contract ComptrollerInterface",
"name": "oldComptroller",
"type": "address"
},
{
"indexed": false,
+ "internalType": "contract ComptrollerInterface",
"name": "newComptroller",
"type": "address"
}
@@ -12271,11 +23750,13 @@
"inputs": [
{
"indexed": false,
+ "internalType": "contract InterestRateModel",
"name": "oldInterestRateModel",
"type": "address"
},
{
"indexed": false,
+ "internalType": "contract InterestRateModel",
"name": "newInterestRateModel",
"type": "address"
}
@@ -12289,80 +23770,175 @@
"inputs": [
{
"indexed": false,
- "name": "oldReserveFactorMantissa",
+ "internalType": "address",
+ "name": "oldPendingAdmin",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "NewPendingAdmin",
+ "type": "event",
+ "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "oldReserveFactorMantissa",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewReserveFactor",
+ "type": "event",
+ "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "redeemer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "redeemTokens",
+ "type": "uint256"
+ }
+ ],
+ "name": "Redeem",
+ "type": "event",
+ "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "payer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "borrower",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "repayAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "accountBorrows",
"type": "uint256"
},
{
"indexed": false,
- "name": "newReserveFactorMantissa",
+ "internalType": "uint256",
+ "name": "totalBorrows",
"type": "uint256"
}
],
- "name": "NewReserveFactor",
+ "name": "RepayBorrow",
"type": "event",
- "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "admin",
+ "internalType": "address",
+ "name": "benefactor",
"type": "address"
},
{
"indexed": false,
- "name": "reduceAmount",
+ "internalType": "uint256",
+ "name": "addAmount",
"type": "uint256"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "newTotalReserves",
"type": "uint256"
}
],
- "name": "ReservesReduced",
+ "name": "ReservesAdded",
"type": "event",
- "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
- "name": "error",
- "type": "uint256"
+ "internalType": "address",
+ "name": "admin",
+ "type": "address"
},
{
"indexed": false,
- "name": "info",
+ "internalType": "uint256",
+ "name": "reduceAmount",
"type": "uint256"
},
{
"indexed": false,
- "name": "detail",
+ "internalType": "uint256",
+ "name": "newTotalReserves",
"type": "uint256"
}
],
- "name": "Failure",
+ "name": "ReservesReduced",
"type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
+ "internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
+ "internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
+ "internalType": "uint256",
"name": "amount",
"type": "uint256"
}
@@ -12371,116 +23947,13 @@
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "name": "spender",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "amount",
- "type": "uint256"
- }
- ],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- }
- ],
- "cWBTC": [
- {
- "constant": true,
- "inputs": [],
- "name": "name",
- "outputs": [
- {
- "name": "",
- "type": "string"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x06fdde03"
- },
- {
- "constant": false,
- "inputs": [
- {
- "name": "spender",
- "type": "address"
- },
- {
- "name": "amount",
- "type": "uint256"
- }
- ],
- "name": "approve",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x095ea7b3"
- },
{
"constant": false,
- "inputs": [
- {
- "name": "repayAmount",
- "type": "uint256"
- }
- ],
- "name": "repayBorrow",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x0e752702"
- },
- {
- "constant": true,
"inputs": [],
- "name": "reserveFactorMantissa",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x173b9904"
- },
- {
- "constant": false,
- "inputs": [
- {
- "name": "account",
- "type": "address"
- }
- ],
- "name": "borrowBalanceCurrent",
+ "name": "_acceptAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12488,81 +23961,43 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x17bfdfbc"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "totalSupply",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x18160ddd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "exchangeRateStored",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x182df0f5"
+ "signature": "0xe9c714f2"
},
{
"constant": false,
"inputs": [
{
- "name": "src",
- "type": "address"
- },
- {
- "name": "dst",
- "type": "address"
- },
- {
- "name": "amount",
+ "internalType": "uint256",
+ "name": "addAmount",
"type": "uint256"
}
],
- "name": "transferFrom",
+ "name": "_addReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x23b872dd"
+ "signature": "0x3e941010"
},
{
"constant": false,
"inputs": [
{
- "name": "borrower",
- "type": "address"
- },
- {
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "reduceAmount",
"type": "uint256"
}
],
- "name": "repayBorrowBehalf",
+ "name": "_reduceReserves",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12570,49 +24005,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x2608f818"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "pendingAdmin",
- "outputs": [
- {
- "name": "",
- "type": "address"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x26782247"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "decimals",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x313ce567"
+ "signature": "0x601a0bf1"
},
{
"constant": false,
"inputs": [
{
- "name": "owner",
+ "internalType": "contract ComptrollerInterface",
+ "name": "newComptroller",
"type": "address"
}
],
- "name": "balanceOfUnderlying",
+ "name": "_setComptroller",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12620,84 +24027,65 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x3af9e669"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "getCash",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x3b1d21a2"
+ "signature": "0x4576b5db"
},
{
"constant": false,
"inputs": [
{
- "name": "newComptroller",
+ "internalType": "contract InterestRateModel",
+ "name": "newInterestRateModel",
"type": "address"
}
],
- "name": "_setComptroller",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x4576b5db"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "totalBorrows",
+ "name": "_setInterestRateModel",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x47bd3718"
+ "signature": "0xf2b3abbd"
},
{
- "constant": true,
- "inputs": [],
- "name": "comptroller",
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address payable",
+ "name": "newPendingAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "_setPendingAdmin",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "address"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x5fe3b567"
+ "signature": "0xb71d1a0c"
},
{
"constant": false,
"inputs": [
{
- "name": "reduceAmount",
+ "internalType": "uint256",
+ "name": "newReserveFactorMantissa",
"type": "uint256"
}
],
- "name": "_reduceReserves",
+ "name": "_setReserveFactor",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12705,14 +24093,15 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x601a0bf1"
+ "signature": "0xfca7820b"
},
{
"constant": true,
"inputs": [],
- "name": "initialExchangeRateMantissa",
+ "name": "accrualBlockNumber",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12720,29 +24109,31 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x675d972c"
+ "signature": "0x6c540baf"
},
{
- "constant": true,
+ "constant": false,
"inputs": [],
- "name": "accrualBlockNumber",
+ "name": "accrueInterest",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x6c540baf"
+ "signature": "0xa6afed95"
},
{
"constant": true,
"inputs": [],
- "name": "underlying",
+ "name": "admin",
"outputs": [
{
+ "internalType": "address payable",
"name": "",
"type": "address"
}
@@ -12750,124 +24141,119 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x6f307dc3"
+ "signature": "0xf851a440"
},
{
"constant": true,
"inputs": [
{
+ "internalType": "address",
"name": "owner",
"type": "address"
- }
- ],
- "name": "balanceOf",
- "outputs": [
+ },
{
- "name": "",
- "type": "uint256"
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x70a08231"
- },
- {
- "constant": false,
- "inputs": [],
- "name": "totalBorrowsCurrent",
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0x73acee98"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
- "name": "redeemAmount",
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "redeemUnderlying",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
- "type": "uint256"
+ "type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x852a12e3"
+ "signature": "0x095ea7b3"
},
{
"constant": true,
- "inputs": [],
- "name": "totalReserves",
- "outputs": [
+ "inputs": [
{
- "name": "",
- "type": "uint256"
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x8f840ddd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "symbol",
+ "name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "string"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x70a08231"
},
{
- "constant": true,
+ "constant": false,
"inputs": [
{
- "name": "account",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
}
],
- "name": "borrowBalanceStored",
+ "name": "balanceOfUnderlying",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0x95dd9193"
+ "signature": "0x3af9e669"
},
{
"constant": false,
"inputs": [
{
- "name": "mintAmount",
+ "internalType": "uint256",
+ "name": "borrowAmount",
"type": "uint256"
}
],
- "name": "mint",
+ "name": "borrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12875,14 +24261,21 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa0712d68"
+ "signature": "0xc5ebeaec"
},
{
"constant": false,
- "inputs": [],
- "name": "accrueInterest",
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "borrowBalanceCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12890,31 +24283,29 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa6afed95"
+ "signature": "0x17bfdfbc"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "dst",
+ "internalType": "address",
+ "name": "account",
"type": "address"
- },
- {
- "name": "amount",
- "type": "uint256"
}
],
- "name": "transfer",
+ "name": "borrowBalanceStored",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "bool"
+ "type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0x95dd9193"
},
{
"constant": true,
@@ -12922,6 +24313,7 @@
"name": "borrowIndex",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12934,9 +24326,10 @@
{
"constant": true,
"inputs": [],
- "name": "supplyRatePerBlock",
+ "name": "borrowRatePerBlock",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -12944,55 +24337,39 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xae9d70b0"
+ "signature": "0xf8f9da28"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "liquidator",
- "type": "address"
- },
- {
- "name": "borrower",
- "type": "address"
- },
- {
- "name": "seizeTokens",
- "type": "uint256"
- }
- ],
- "name": "seize",
+ "constant": true,
+ "inputs": [],
+ "name": "comptroller",
"outputs": [
{
+ "internalType": "contract ComptrollerInterface",
"name": "",
- "type": "uint256"
+ "type": "address"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xb2a02ff1"
+ "signature": "0x5fe3b567"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "newPendingAdmin",
- "type": "address"
- }
- ],
- "name": "_setPendingAdmin",
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
- "type": "uint256"
+ "type": "uint8"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xb71d1a0c"
+ "signature": "0x313ce567"
},
{
"constant": false,
@@ -13000,6 +24377,7 @@
"name": "exchangeRateCurrent",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -13011,27 +24389,11 @@
},
{
"constant": true,
- "inputs": [
- {
- "name": "account",
- "type": "address"
- }
- ],
- "name": "getAccountSnapshot",
+ "inputs": [],
+ "name": "exchangeRateStored",
"outputs": [
{
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
- "name": "",
- "type": "uint256"
- },
- {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -13039,63 +24401,36 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xc37f68e2"
+ "signature": "0x182df0f5"
},
{
- "constant": false,
+ "constant": true,
"inputs": [
{
- "name": "borrowAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
}
],
- "name": "borrow",
+ "name": "getAccountSnapshot",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xc5ebeaec"
- },
- {
- "constant": false,
- "inputs": [
+ },
{
- "name": "redeemTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- }
- ],
- "name": "redeem",
- "outputs": [
+ },
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0xdb006a75"
- },
- {
- "constant": true,
- "inputs": [
- {
- "name": "owner",
- "type": "address"
},
{
- "name": "spender",
- "type": "address"
- }
- ],
- "name": "allowance",
- "outputs": [
- {
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -13103,42 +24438,110 @@
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0xc37f68e2"
},
{
- "constant": false,
+ "constant": true,
"inputs": [],
- "name": "_acceptAdmin",
+ "name": "getCash",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xe9c714f2"
+ "signature": "0x3b1d21a2"
},
{
"constant": false,
"inputs": [
{
- "name": "newInterestRateModel",
+ "internalType": "address",
+ "name": "underlying_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
"type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
- "name": "_setInterestRateModel",
- "outputs": [
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x1a31d465"
+ },
+ {
+ "constant": false,
+ "inputs": [
{
- "name": "",
+ "internalType": "contract ComptrollerInterface",
+ "name": "comptroller_",
+ "type": "address"
+ },
+ {
+ "internalType": "contract InterestRateModel",
+ "name": "interestRateModel_",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "initialExchangeRateMantissa_",
"type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "decimals_",
+ "type": "uint8"
}
],
+ "name": "initialize",
+ "outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf2b3abbd"
+ "signature": "0x99d8c1b4"
},
{
"constant": true,
@@ -13146,6 +24549,7 @@
"name": "interestRateModel",
"outputs": [
{
+ "internalType": "contract InterestRateModel",
"name": "",
"type": "address"
}
@@ -13155,18 +24559,37 @@
"type": "function",
"signature": "0xf3fdb15a"
},
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isCToken",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xfe9c44ae"
+ },
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "repayAmount",
"type": "uint256"
},
{
+ "internalType": "contract CTokenInterface",
"name": "cTokenCollateral",
"type": "address"
}
@@ -13174,6 +24597,7 @@
"name": "liquidateBorrow",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -13184,476 +24608,463 @@
"signature": "0xf5e3c462"
},
{
- "constant": true,
- "inputs": [],
- "name": "admin",
- "outputs": [
+ "constant": false,
+ "inputs": [
{
- "name": "",
- "type": "address"
+ "internalType": "uint256",
+ "name": "mintAmount",
+ "type": "uint256"
}
],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0xf851a440"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "borrowRatePerBlock",
+ "name": "mint",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
- "stateMutability": "view",
+ "stateMutability": "nonpayable",
"type": "function",
- "signature": "0xf8f9da28"
+ "signature": "0xa0712d68"
},
{
- "constant": false,
- "inputs": [
- {
- "name": "newReserveFactorMantissa",
- "type": "uint256"
- }
- ],
- "name": "_setReserveFactor",
+ "constant": true,
+ "inputs": [],
+ "name": "name",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
- "stateMutability": "nonpayable",
+ "stateMutability": "view",
"type": "function",
- "signature": "0xfca7820b"
+ "signature": "0x06fdde03"
},
{
"constant": true,
"inputs": [],
- "name": "isCToken",
+ "name": "pendingAdmin",
"outputs": [
{
+ "internalType": "address payable",
"name": "",
- "type": "bool"
+ "type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xfe9c44ae"
+ "signature": "0x26782247"
},
{
+ "constant": false,
"inputs": [
{
- "name": "underlying_",
- "type": "address"
- },
- {
- "name": "comptroller_",
- "type": "address"
- },
- {
- "name": "interestRateModel_",
- "type": "address"
- },
- {
- "name": "initialExchangeRateMantissa_",
+ "internalType": "uint256",
+ "name": "redeemTokens",
"type": "uint256"
- },
- {
- "name": "name_",
- "type": "string"
- },
- {
- "name": "symbol_",
- "type": "string"
- },
+ }
+ ],
+ "name": "redeem",
+ "outputs": [
{
- "name": "decimals_",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
+ "type": "function",
+ "signature": "0xdb006a75"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "interestAccumulated",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "borrowIndex",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "redeemAmount",
"type": "uint256"
}
],
- "name": "AccrueInterest",
- "type": "event",
- "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "minter",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "mintAmount",
- "type": "uint256"
- },
+ "name": "redeemUnderlying",
+ "outputs": [
{
- "indexed": false,
- "name": "mintTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "Mint",
- "type": "event",
- "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x852a12e3"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "redeemer",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "redeemAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "redeemTokens",
+ "internalType": "uint256",
+ "name": "repayAmount",
"type": "uint256"
}
],
- "name": "Redeem",
- "type": "event",
- "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "borrower",
- "type": "address"
- },
- {
- "indexed": false,
- "name": "borrowAmount",
- "type": "uint256"
- },
- {
- "indexed": false,
- "name": "accountBorrows",
- "type": "uint256"
- },
+ "name": "repayBorrow",
+ "outputs": [
{
- "indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- }
- ],
- "name": "Borrow",
- "type": "event",
- "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x0e752702"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "payer",
- "type": "address"
- },
- {
- "indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
- "indexed": false,
+ "internalType": "uint256",
"name": "repayAmount",
"type": "uint256"
- },
+ }
+ ],
+ "name": "repayBorrowBehalf",
+ "outputs": [
{
- "indexed": false,
- "name": "accountBorrows",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x2608f818"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "reserveFactorMantissa",
+ "outputs": [
{
- "indexed": false,
- "name": "totalBorrows",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "RepayBorrow",
- "type": "event",
- "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x173b9904"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
+ "internalType": "address",
"name": "liquidator",
"type": "address"
},
{
- "indexed": false,
+ "internalType": "address",
"name": "borrower",
"type": "address"
},
{
- "indexed": false,
- "name": "repayAmount",
+ "internalType": "uint256",
+ "name": "seizeTokens",
"type": "uint256"
- },
- {
- "indexed": false,
- "name": "cTokenCollateral",
- "type": "address"
- },
+ }
+ ],
+ "name": "seize",
+ "outputs": [
{
- "indexed": false,
- "name": "seizeTokens",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
}
],
- "name": "LiquidateBorrow",
- "type": "event",
- "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xb2a02ff1"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldPendingAdmin",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "supplyRatePerBlock",
+ "outputs": [
{
- "indexed": false,
- "name": "newPendingAdmin",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewPendingAdmin",
- "type": "event",
- "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0xae9d70b0"
},
{
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "name": "oldAdmin",
- "type": "address"
- },
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
{
- "indexed": false,
- "name": "newAdmin",
- "type": "address"
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
- "name": "NewAdmin",
- "type": "event",
- "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x95d89b41"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "totalBorrows",
+ "outputs": [
{
- "indexed": false,
- "name": "oldComptroller",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x47bd3718"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "totalBorrowsCurrent",
+ "outputs": [
{
- "indexed": false,
- "name": "newComptroller",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewComptroller",
- "type": "event",
- "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x73acee98"
},
{
- "anonymous": false,
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "totalReserves",
+ "outputs": [
{
- "indexed": false,
- "name": "oldInterestRateModel",
- "type": "address"
- },
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x8f840ddd"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
{
- "indexed": false,
- "name": "newInterestRateModel",
- "type": "address"
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
}
],
- "name": "NewMarketInterestRateModel",
- "type": "event",
- "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "oldReserveFactorMantissa",
- "type": "uint256"
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
},
{
- "indexed": false,
- "name": "newReserveFactorMantissa",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "NewReserveFactor",
- "type": "event",
- "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa9059cbb"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": false,
- "name": "admin",
+ "internalType": "address",
+ "name": "src",
"type": "address"
},
{
- "indexed": false,
- "name": "reduceAmount",
- "type": "uint256"
+ "internalType": "address",
+ "name": "dst",
+ "type": "address"
},
{
- "indexed": false,
- "name": "newTotalReserves",
+ "internalType": "uint256",
+ "name": "amount",
"type": "uint256"
}
],
- "name": "ReservesReduced",
- "type": "event",
- "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x23b872dd"
},
{
- "anonymous": false,
+ "constant": true,
+ "inputs": [],
+ "name": "underlying",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x6f307dc3"
+ }
+ ],
+ "USDC": [
+ {
"inputs": [
{
- "indexed": false,
- "name": "error",
+ "internalType": "uint256",
+ "name": "_initialAmount",
"type": "uint256"
},
{
- "indexed": false,
- "name": "info",
- "type": "uint256"
+ "internalType": "string",
+ "name": "_tokenName",
+ "type": "string"
},
{
- "indexed": false,
- "name": "detail",
- "type": "uint256"
+ "internalType": "uint8",
+ "name": "_decimalUnits",
+ "type": "uint8"
+ },
+ {
+ "internalType": "string",
+ "name": "_tokenSymbol",
+ "type": "string"
}
],
- "name": "Failure",
- "type": "event",
- "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor",
+ "signature": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
- "name": "from",
+ "internalType": "address",
+ "name": "owner",
"type": "address"
},
{
"indexed": true,
- "name": "to",
+ "internalType": "address",
+ "name": "spender",
"type": "address"
},
{
"indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "Transfer",
+ "name": "Approval",
"type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
- "name": "owner",
+ "internalType": "address",
+ "name": "from",
"type": "address"
},
{
"indexed": true,
- "name": "spender",
+ "internalType": "address",
+ "name": "to",
"type": "address"
},
{
"indexed": false,
- "name": "amount",
+ "internalType": "uint256",
+ "name": "value",
"type": "uint256"
}
],
- "name": "Approval",
+ "name": "Transfer",
"type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
- }
- ],
- "USDC": [
- {
- "constant": true,
- "inputs": [],
- "name": "name",
- "outputs": [
- {
- "name": "",
- "type": "string"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x06fdde03"
+ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "_owner",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "value",
"type": "uint256"
}
@@ -13665,103 +25076,51 @@
"type": "function",
"signature": "0x08bca566"
},
- {
- "constant": false,
- "inputs": [
- {
- "name": "_spender",
- "type": "address"
- },
- {
- "name": "_value",
- "type": "uint256"
- }
- ],
- "name": "approve",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x095ea7b3"
- },
{
"constant": true,
- "inputs": [],
- "name": "totalSupply",
- "outputs": [
- {
- "name": "",
- "type": "uint256"
- }
- ],
- "payable": false,
- "stateMutability": "view",
- "type": "function",
- "signature": "0x18160ddd"
- },
- {
- "constant": false,
"inputs": [
{
- "name": "_from",
+ "internalType": "address",
+ "name": "_owner",
"type": "address"
},
{
- "name": "_to",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
- },
- {
- "name": "_value",
- "type": "uint256"
}
],
- "name": "transferFrom",
- "outputs": [
- {
- "name": "",
- "type": "bool"
- }
- ],
- "payable": false,
- "stateMutability": "nonpayable",
- "type": "function",
- "signature": "0x23b872dd"
- },
- {
- "constant": true,
- "inputs": [],
- "name": "decimals",
+ "name": "allowance",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
- "type": "uint8"
+ "type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x313ce567"
+ "signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "_spender",
"type": "address"
},
{
- "name": "_subtractedValue",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "decreaseApproval",
+ "name": "approve",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -13769,12 +25128,13 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0x66188463"
+ "signature": "0x095ea7b3"
},
{
"constant": true,
"inputs": [
{
+ "internalType": "address",
"name": "_owner",
"type": "address"
}
@@ -13782,6 +25142,7 @@
"name": "balanceOf",
"outputs": [
{
+ "internalType": "uint256",
"name": "",
"type": "uint256"
}
@@ -13794,33 +25155,37 @@
{
"constant": true,
"inputs": [],
- "name": "symbol",
+ "name": "decimals",
"outputs": [
{
+ "internalType": "uint8",
"name": "",
- "type": "string"
+ "type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0x95d89b41"
+ "signature": "0x313ce567"
},
{
"constant": false,
"inputs": [
{
- "name": "_to",
+ "internalType": "address",
+ "name": "_spender",
"type": "address"
},
{
- "name": "_value",
+ "internalType": "uint256",
+ "name": "_subtractedValue",
"type": "uint256"
}
],
- "name": "transfer",
+ "name": "decreaseApproval",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -13828,16 +25193,18 @@
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
- "signature": "0xa9059cbb"
+ "signature": "0x66188463"
},
{
"constant": false,
"inputs": [
{
+ "internalType": "address",
"name": "_spender",
"type": "address"
},
{
+ "internalType": "uint256",
"name": "_addedValue",
"type": "uint256"
}
@@ -13845,6 +25212,7 @@
"name": "increaseApproval",
"outputs": [
{
+ "internalType": "bool",
"name": "",
"type": "bool"
}
@@ -13856,97 +25224,110 @@
},
{
"constant": true,
- "inputs": [
- {
- "name": "_owner",
- "type": "address"
- },
+ "inputs": [],
+ "name": "name",
+ "outputs": [
{
- "name": "_spender",
- "type": "address"
+ "internalType": "string",
+ "name": "",
+ "type": "string"
}
],
- "name": "allowance",
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x06fdde03"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
"outputs": [
{
+ "internalType": "string",
"name": "",
- "type": "uint256"
+ "type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
- "signature": "0xdd62ed3e"
+ "signature": "0x95d89b41"
},
{
- "inputs": [
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
{
- "name": "_initialAmount",
+ "internalType": "uint256",
+ "name": "",
"type": "uint256"
- },
- {
- "name": "_tokenName",
- "type": "string"
- },
- {
- "name": "_decimalUnits",
- "type": "uint8"
- },
- {
- "name": "_tokenSymbol",
- "type": "string"
}
],
"payable": false,
- "stateMutability": "nonpayable",
- "type": "constructor",
- "signature": "constructor"
+ "stateMutability": "view",
+ "type": "function",
+ "signature": "0x18160ddd"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": true,
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "name": "spender",
+ "internalType": "address",
+ "name": "_to",
"type": "address"
},
{
- "indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "Approval",
- "type": "event",
- "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0xa9059cbb"
},
{
- "anonymous": false,
+ "constant": false,
"inputs": [
{
- "indexed": true,
- "name": "from",
+ "internalType": "address",
+ "name": "_from",
"type": "address"
},
{
- "indexed": true,
- "name": "to",
+ "internalType": "address",
+ "name": "_to",
"type": "address"
},
{
- "indexed": false,
- "name": "value",
+ "internalType": "uint256",
+ "name": "_value",
"type": "uint256"
}
],
- "name": "Transfer",
- "type": "event",
- "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "signature": "0x23b872dd"
}
]
-}
\ No newline at end of file
+}
diff --git a/networks/goerli.json b/networks/goerli.json
index 2b18cc67a..49f0bba71 100644
--- a/networks/goerli.json
+++ b/networks/goerli.json
@@ -1,92 +1,156 @@
{
"Contracts": {
- "ZRX": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65",
- "cUSDC": "0xD9FFe966A831089981Bd1539503c9d3cb45E5AAb",
- "PriceOracle": "0x9f8376931cd4c3c38C0128A77082ba40e8D4a8a1",
- "PriceOracleProxy": "0x83047d759094cBc94df2DE8caF33C6C5990eE095",
- "Maximillion": "0xcCb206b7b33F46cB0a8e55Bf1f173fe3e8661076",
- "cDAI": "0xd9fd9E875c9C1d567825E431DD6Ed4f0e51aA8Bf",
- "DAI": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256",
- "StdComptroller": "0xC2210dFFE9DE7eA7A7ed933EeE3e28ae6786b9f5",
- "Unitroller": "0xe884DcC3167613A5D6A6EF96F90B74E411F32C8a",
- "Comptroller": "0xe884DcC3167613A5D6A6EF96F90B74E411F32C8a",
- "cBAT": "0xc31211101e6D98bEA24F1f32cbeBa3e9ac7c9749",
- "Base0bps_Slope2000bps": "0x23E8731b39E46941f73951b7f39d921bFd6C2E05",
- "BAT": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18",
- "cETH": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1",
- "Base500bps_Slope1200bps": "0x63cFb6469408a64d6713C28231c8d90a609aeB23",
- "Base200bps_Slope3000bps": "0x8cD09AF719A93fB3b52a05Dbc4eC0Fa559EEC9C2",
- "cREP": "0x0812e50F3740b89899Ce889C2ab913eA2565f626",
- "WBTC": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c",
- "REP": "0x4308246f8806135d840c8C81bF658d58c0Fd295C",
- "cZRX": "0xf412f4d0eE1D96eb486C6C2836bEDc4912bA294E",
- "cWBTC": "0xe43d693C6d063BDF4A9681f9A6D9D1439344f4f7",
- "USDC": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0"
+ "ZRX": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165",
+ "cUSDC": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0",
+ "PriceOracle": "0x9A536Ed5C97686988F93C9f7C2A390bF3B59c0ec",
+ "PriceOracleProxy": "0xd0c84453b3945cd7e84BF7fc53BfFd6718913B71",
+ "Maximillion": "0x73d3F01b8aC5063f4601C7C45DA5Fdf1b5240C92",
+ "CNT1": "0x5E5bB47a4F5c14115f39Ce9207720fD730939c19",
+ "GovernorAlpha": "0x8C3969Dd514B559D78135e9C210F2F773Feadf21",
+ "cDAI": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb",
+ "GovernorAlpha2": "0xc4F53FD250B3331000e3eBBE46BDA11D01445B2A",
+ "DAI": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60",
+ "StdComptroller": "0x95aACAf2342dcF58C08d221404f370c4b1BBD6E6",
+ "Unitroller": "0x627EA49279FD0dE89186A58b8758aD02B6Be2867",
+ "Comptroller": "0x627EA49279FD0dE89186A58b8758aD02B6Be2867",
+ "Comp": "0xfa5E1B628EFB17C024ca76f65B45Faf6B3128CA5",
+ "cBAT": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D",
+ "Base0bps_Slope2000bps": "0xA4d7E82dA57339020cbB3cA2B59D173AcDCa3504",
+ "BAT": "0x70cBa46d2e933030E2f274AE58c951C800548AeF",
+ "cErc20Delegate": "0xB40d042a65Dd413Ae0fd85bECF8D722e16bC46F1",
+ "StdComptrollerG1": "0x503506EfC05Bc2BAef7ad0dF052827Aca6DC2964",
+ "cETH": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF",
+ "Base500bps_Slope1200bps": "0x4C0f5B2f3739DE27874e200CFBc482a9086066CE",
+ "cSAI": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809",
+ "Timelock": "0x25e46957363e16C4e2D5F2854b062475F9f8d287",
+ "Base200bps_Slope3000bps": "0x1E83FD76621da78266955C473CD8559D5FA1c34c",
+ "cREP": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D",
+ "WBTC": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05",
+ "SAI": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42",
+ "REP": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96",
+ "cZRX": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1",
+ "cWBTC": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF",
+ "USDC": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C"
},
"Blocks": {
- "ZRX": 924883,
- "cUSDC": 924929,
- "PriceOracle": 924871,
- "PriceOracleProxy": 924948,
- "Maximillion": 924932,
- "cDAI": 924893,
- "DAI": 924885,
- "StdComptroller": 924875,
- "Unitroller": 924873,
- "cBAT": 924892,
- "Base0bps_Slope2000bps": 924879,
- "BAT": 924884,
- "cETH": 924895,
- "Base500bps_Slope1200bps": 924878,
- "Base200bps_Slope3000bps": 924881,
- "cREP": 924894,
- "WBTC": 924889,
- "REP": 924886,
- "cZRX": 924891,
- "cWBTC": 924931,
- "USDC": 924887
+ "ZRX": 1971943,
+ "cUSDC": 1972004,
+ "PriceOracle": 1971913,
+ "PriceOracleProxy": 1972036,
+ "Maximillion": 1972017,
+ "CNT1": 2001121,
+ "GovernorAlpha": 1971912,
+ "cDAI": 1972015,
+ "GovernorAlpha2": 2000668,
+ "DAI": 1971947,
+ "StdComptroller": 1971931,
+ "Unitroller": 1971914,
+ "Comp": 1971911,
+ "cBAT": 1971988,
+ "Base0bps_Slope2000bps": 1971941,
+ "BAT": 1971945,
+ "cErc20Delegate": 1972007,
+ "StdComptrollerG1": 1971926,
+ "cETH": 1971992,
+ "Base500bps_Slope1200bps": 1971936,
+ "cSAI": 1971989,
+ "Timelock": 1966773,
+ "Base200bps_Slope3000bps": 1971942,
+ "cREP": 1971991,
+ "WBTC": 1971953,
+ "SAI": 1971948,
+ "REP": 1971949,
+ "cZRX": 1971986,
+ "cWBTC": 1972006,
+ "USDC": 1971951
},
"PriceOracle": {
"description": "Simple Price Oracle",
- "address": "0x9f8376931cd4c3c38C0128A77082ba40e8D4a8a1"
+ "address": "0x9A536Ed5C97686988F93C9f7C2A390bF3B59c0ec"
+ },
+ "PriceOracleProxy": {
+ "description": "Price Oracle Proxy",
+ "cETH": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF",
+ "cUSDC": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0",
+ "cSAI": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809",
+ "cDAI": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb",
+ "address": "0xd0c84453b3945cd7e84BF7fc53BfFd6718913B71"
},
"Maximillion": {
"description": "Maximillion",
- "cEtherAddress": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1",
- "address": "0xcCb206b7b33F46cB0a8e55Bf1f173fe3e8661076"
+ "cEtherAddress": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF",
+ "address": "0x73d3F01b8aC5063f4601C7C45DA5Fdf1b5240C92"
},
"Unitroller": {
"description": "Unitroller",
- "address": "0xe884DcC3167613A5D6A6EF96F90B74E411F32C8a"
+ "address": "0x627EA49279FD0dE89186A58b8758aD02B6Be2867"
},
"Comptroller": {
+ "StdComptrollerG1": {
+ "address": "0x503506EfC05Bc2BAef7ad0dF052827Aca6DC2964",
+ "contract": "ComptrollerG1",
+ "description": "StandardG1 Comptroller Impl"
+ },
"StdComptroller": {
- "address": "0xC2210dFFE9DE7eA7A7ed933EeE3e28ae6786b9f5",
+ "address": "0x95aACAf2342dcF58C08d221404f370c4b1BBD6E6",
"contract": "Comptroller",
"description": "Standard Comptroller Impl"
}
},
+ "Comp": {
+ "contract": "Comp",
+ "symbol": "COMP",
+ "name": "Compound Governance Token",
+ "decimals": 18,
+ "address": "0xfa5E1B628EFB17C024ca76f65B45Faf6B3128CA5"
+ },
+ "Governor": {
+ "GovernorAlpha": {
+ "name": "GovernorAlpha",
+ "contract": "GovernorAlpha",
+ "address": "0x8C3969Dd514B559D78135e9C210F2F773Feadf21"
+ },
+ "GovernorAlpha2": {
+ "name": "GovernorAlpha2",
+ "contract": "GovernorAlpha",
+ "address": "0xc4F53FD250B3331000e3eBBE46BDA11D01445B2A"
+ }
+ },
+ "Timelock": {
+ "address": "0x25e46957363e16C4e2D5F2854b062475F9f8d287",
+ "contract": "Timelock",
+ "description": "Test Timelock"
+ },
"Constructors": {
"ZRX": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002307800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035a52580000000000000000000000000000000000000000000000000000000000",
- "cUSDC": "0x0000000000000000000000007dc9912705ffdb928f62d9694fefdd3a09f3ecd0000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a00000000000000000000000023e8731b39e46941f73951b7f39d921bfd6c2e050000000000000000000000000000000000000000000000000000b5e620f4800000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000",
+ "cUSDC": "0x000000000000000000000000d87ba7a50b2e7e660f678a895e4b72e7cb4ccd9c000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be2867000000000000000000000000a4d7e82da57339020cbb3ca2b59d173acdca35040000000000000000000000000000000000000000000000000000b5e620f48000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000",
"PriceOracle": "0x",
- "PriceOracleProxy": "0x000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000009f8376931cd4c3c38c0128a77082ba40e8d4a8a10000000000000000000000002b2aa9c7967efad4b73bfd8801333928806409a1",
- "Maximillion": "0x0000000000000000000000002b2aa9c7967efad4b73bfd8801333928806409a1",
- "cDAI": "0x000000000000000000000000b8c5995387c8086d0b496bd54755d14d7ced8256000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a00000000000000000000000063cfb6469408a64d6713c28231c8d90a609aeb23000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642044616920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046344414900000000000000000000000000000000000000000000000000000000",
+ "PriceOracleProxy": "0x000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000009a536ed5c97686988f93c9f7c2a390bf3b59c0ec00000000000000000000000020572e4c090f15667cf7378e16fad2ea0e2f3eff000000000000000000000000cec4a43ebb02f9b80916f1c718338169d6d5c1f00000000000000000000000005d4373f8c1af21c391ad7ec755762d8dd3cca809000000000000000000000000822397d9a55d0fefd20f5c4bcab33c5f65bd28eb",
+ "Maximillion": "0x00000000000000000000000020572e4c090f15667cf7378e16fad2ea0e2f3eff",
+ "CNT1": "0x",
+ "GovernorAlpha": "0x00000000000000000000000025e46957363e16c4e2d5f2854b062475f9f8d287000000000000000000000000fa5e1b628efb17c024ca76f65b45faf6b3128ca5000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726",
+ "cDAI": "0x000000000000000000000000dc31ee1784292379fbb2964b3b9c4124d8f89c60000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000004c0f5b2f3739de27874e200cfbc482a9086066ce000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726000000000000000000000000b40d042a65dd413ae0fd85becf8d722e16bc46f100000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000021436f6d706f756e64204d756c7469436f6c6c61746572616c2044414920f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004634441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
+ "GovernorAlpha2": "0x00000000000000000000000025e46957363e16c4e2d5f2854b062475f9f8d287000000000000000000000000fa5e1b628efb17c024ca76f65b45faf6b3128ca5000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726",
"DAI": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003446169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000",
"StdComptroller": "0x",
"Unitroller": "0x",
- "cBAT": "0x0000000000000000000000003e0d325aba23e9562281d48b2bd52594db48cc18000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c2000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000",
+ "Comp": "0x000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726",
+ "cBAT": "0x00000000000000000000000070cba46d2e933030e2f274ae58c951c800548aef000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000",
"Base0bps_Slope2000bps": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb140000",
"BAT": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000015426173696320417474656e74696f6e20546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000034241540000000000000000000000000000000000000000000000000000000000",
- "cETH": "0x000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a00000000000000000000000023e8731b39e46941f73951b7f39d921bfd6c2e05000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000",
+ "cErc20Delegate": "0x",
+ "StdComptrollerG1": "0x",
+ "cETH": "0x000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be2867000000000000000000000000a4d7e82da57339020cbb3ca2b59d173acdca3504000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000",
"Base500bps_Slope1200bps": "0x00000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000001aa535d3d0c0000",
+ "cSAI": "0x0000000000000000000000008e9192d6f9d903b1beb3836f52a9f71e05846e42000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000004c0f5b2f3739de27874e200cfbc482a9086066ce000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642053414920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046353414900000000000000000000000000000000000000000000000000000000",
+ "Timelock": "0x000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000078",
"Base200bps_Slope3000bps": "0x00000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000429d069189e0000",
- "cREP": "0x0000000000000000000000004308246f8806135d840c8c81bf658d58c0fd295c000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c2000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000",
+ "cREP": "0x000000000000000000000000183faf58c4461972765f3f90c6272a4ece66bd96000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000",
"WBTC": "0x",
+ "SAI": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003536169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035341490000000000000000000000000000000000000000000000000000000000",
"REP": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000005417567757200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035245500000000000000000000000000000000000000000000000000000000000",
- "cZRX": "0x0000000000000000000000006c041606a9b4a449df6b5ff7274b79a869616d65000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c2000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000",
- "cWBTC": "0x000000000000000000000000fd1853eb1391b094dd9dfab566d94f8b6400316c000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c200000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000",
+ "cZRX": "0x000000000000000000000000e4e81fa6b16327d4b78cfeb83aade04ba7075165000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000",
+ "cWBTC": "0x000000000000000000000000c04b0d3107736c32e19f1c62b2af67be61d63a05000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c00000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000",
"USDC": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000855534420436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000"
},
"Tokens": {
@@ -96,25 +160,27 @@
"symbol": "ZRX",
"decimals": 18,
"contract": "FaucetToken",
- "address": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65"
+ "address": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165"
},
"cUSDC": {
"name": "Compound USD Coin 📈",
"symbol": "cUSDC",
"decimals": 8,
- "underlying": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0",
+ "underlying": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000",
- "address": "0xD9FFe966A831089981Bd1539503c9d3cb45E5AAb"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0"
},
"cDAI": {
- "name": "Compound Dai 📈",
+ "name": "Compound MultiCollateral DAI 📈",
"symbol": "cDAI",
"decimals": 8,
- "underlying": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256",
- "contract": "CErc20",
+ "underlying": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60",
+ "contract": "CErc20Delegator",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0xd9fd9E875c9C1d567825E431DD6Ed4f0e51aA8Bf"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb"
},
"DAI": {
"description": "Standard",
@@ -122,16 +188,24 @@
"symbol": "DAI",
"decimals": 18,
"contract": "FaucetToken",
- "address": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256"
+ "address": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60"
+ },
+ "COMP": {
+ "name": "Compound Governance Token",
+ "symbol": "COMP",
+ "decimals": 18,
+ "contract": "Comp",
+ "address": "0xfa5E1B628EFB17C024ca76f65B45Faf6B3128CA5"
},
"cBAT": {
"name": "Compound Basic Attention Token 📈",
"symbol": "cBAT",
"decimals": 8,
- "underlying": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18",
+ "underlying": "0x70cBa46d2e933030E2f274AE58c951C800548AeF",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0xc31211101e6D98bEA24F1f32cbeBa3e9ac7c9749"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D"
},
"BAT": {
"description": "NonStandard",
@@ -139,7 +213,7 @@
"symbol": "BAT",
"decimals": 18,
"contract": "FaucetNonStandardToken",
- "address": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18"
+ "address": "0x70cBa46d2e933030E2f274AE58c951C800548AeF"
},
"cETH": {
"name": "Compound Ether 📈",
@@ -148,16 +222,28 @@
"underlying": "",
"contract": "CEther",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF"
+ },
+ "cSAI": {
+ "name": "Compound SAI 📈",
+ "symbol": "cSAI",
+ "decimals": 8,
+ "underlying": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42",
+ "contract": "CErc20",
+ "initial_exchange_rate_mantissa": "200000000000000000000000000",
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809"
},
"cREP": {
"name": "Compound Augur 📈",
"symbol": "cREP",
"decimals": 8,
- "underlying": "0x4308246f8806135d840c8C81bF658d58c0Fd295C",
+ "underlying": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0x0812e50F3740b89899Ce889C2ab913eA2565f626"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D"
},
"WBTC": {
"description": "WBTC",
@@ -165,7 +251,15 @@
"symbol": "WBTC",
"decimals": 8,
"contract": "WBTCToken",
- "address": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c"
+ "address": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05"
+ },
+ "SAI": {
+ "description": "Standard",
+ "name": "Sai",
+ "symbol": "SAI",
+ "decimals": 18,
+ "contract": "FaucetToken",
+ "address": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42"
},
"REP": {
"description": "Standard",
@@ -173,25 +267,27 @@
"symbol": "REP",
"decimals": 18,
"contract": "FaucetToken",
- "address": "0x4308246f8806135d840c8C81bF658d58c0Fd295C"
+ "address": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96"
},
"cZRX": {
"name": "Compound 0x 📈",
"symbol": "cZRX",
"decimals": 8,
- "underlying": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65",
+ "underlying": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0xf412f4d0eE1D96eb486C6C2836bEDc4912bA294E"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1"
},
"cWBTC": {
"name": "Compound Wrapped BTC 📈",
"symbol": "cWBTC",
"decimals": 8,
- "underlying": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c",
+ "underlying": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "20000000000000000",
- "address": "0xe43d693C6d063BDF4A9681f9A6D9D1439344f4f7"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF"
},
"USDC": {
"description": "Standard",
@@ -199,7 +295,20 @@
"symbol": "USDC",
"decimals": 6,
"contract": "FaucetToken",
- "address": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0"
+ "address": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C"
+ }
+ },
+ "CTokenDelegate": {
+ "cErc20Delegate": {
+ "address": "0xB40d042a65Dd413Ae0fd85bECF8D722e16bC46F1",
+ "contract": "CErc20Delegate",
+ "description": "Standard CErc20 Delegate"
+ }
+ },
+ "Counter": {
+ "CNT1": {
+ "name": "CNT1",
+ "contract": "Counter"
}
},
"cTokens": {
@@ -207,37 +316,41 @@
"name": "Compound 0x 📈",
"symbol": "cZRX",
"decimals": 8,
- "underlying": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65",
+ "underlying": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0xf412f4d0eE1D96eb486C6C2836bEDc4912bA294E"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1"
},
"cBAT": {
"name": "Compound Basic Attention Token 📈",
"symbol": "cBAT",
"decimals": 8,
- "underlying": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18",
+ "underlying": "0x70cBa46d2e933030E2f274AE58c951C800548AeF",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0xc31211101e6D98bEA24F1f32cbeBa3e9ac7c9749"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D"
},
- "cDAI": {
- "name": "Compound Dai 📈",
- "symbol": "cDAI",
+ "cSAI": {
+ "name": "Compound SAI 📈",
+ "symbol": "cSAI",
"decimals": 8,
- "underlying": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256",
+ "underlying": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0xd9fd9E875c9C1d567825E431DD6Ed4f0e51aA8Bf"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809"
},
"cREP": {
"name": "Compound Augur 📈",
"symbol": "cREP",
"decimals": 8,
- "underlying": "0x4308246f8806135d840c8C81bF658d58c0Fd295C",
+ "underlying": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0x0812e50F3740b89899Ce889C2ab913eA2565f626"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D"
},
"cETH": {
"name": "Compound Ether 📈",
@@ -246,25 +359,38 @@
"underlying": "",
"contract": "CEther",
"initial_exchange_rate_mantissa": "200000000000000000000000000",
- "address": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF"
},
"cUSDC": {
"name": "Compound USD Coin 📈",
"symbol": "cUSDC",
"decimals": 8,
- "underlying": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0",
+ "underlying": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "200000000000000",
- "address": "0xD9FFe966A831089981Bd1539503c9d3cb45E5AAb"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0"
},
"cWBTC": {
"name": "Compound Wrapped BTC 📈",
"symbol": "cWBTC",
"decimals": 8,
- "underlying": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c",
+ "underlying": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05",
"contract": "CErc20",
"initial_exchange_rate_mantissa": "20000000000000000",
- "address": "0xe43d693C6d063BDF4A9681f9A6D9D1439344f4f7"
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF"
+ },
+ "cDAI": {
+ "name": "Compound MultiCollateral DAI 📈",
+ "symbol": "cDAI",
+ "decimals": 8,
+ "underlying": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60",
+ "contract": "CErc20Delegator",
+ "initial_exchange_rate_mantissa": "200000000000000000000000000",
+ "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+ "address": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb"
}
},
"InterestRateModel": {
@@ -274,7 +400,7 @@
"description": "WhitePaper baseRate=50000000000000000 multiplier=120000000000000000",
"base": "50000000000000000",
"slope": "120000000000000000",
- "address": "0x63cFb6469408a64d6713C28231c8d90a609aeB23"
+ "address": "0x4C0f5B2f3739DE27874e200CFBc482a9086066CE"
},
"Base0bps_Slope2000bps": {
"name": "Base0bps_Slope2000bps",
@@ -282,7 +408,7 @@
"description": "WhitePaper baseRate=0 multiplier=200000000000000000",
"base": "0",
"slope": "200000000000000000",
- "address": "0x23E8731b39E46941f73951b7f39d921bFd6C2E05"
+ "address": "0xA4d7E82dA57339020cbB3cA2B59D173AcDCa3504"
},
"Base200bps_Slope3000bps": {
"name": "Base200bps_Slope3000bps",
@@ -290,7 +416,7 @@
"description": "WhitePaper baseRate=20000000000000000 multiplier=300000000000000000",
"base": "20000000000000000",
"slope": "300000000000000000",
- "address": "0x8cD09AF719A93fB3b52a05Dbc4eC0Fa559EEC9C2"
+ "address": "0x1E83FD76621da78266955C473CD8559D5FA1c34c"
}
}
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index 6a92408da..a9c3b4664 100644
--- a/package.json
+++ b/package.json
@@ -4,36 +4,29 @@
"description": "The Compound Protocol",
"main": "index.js",
"scripts": {
- "chain": "./script/ganache",
"compile": "./script/compile",
"coverage": "./script/coverage",
"deploy": "./scenario/script/repl -s ./script/scen/deploy.scen",
"lint": "./script/lint",
- "ganache": "./script/ganache",
"repl": "./scenario/script/repl",
- "test": "./script/test"
+ "test": "./script/test",
+ "test:prepare": "NO_RUN=true ./script/test"
},
"repository": "git@github.com:compound-finance/compound-protocol.git",
"author": "Compound Finance",
"license": "UNLICENSED",
"devDependencies": {
"bignumber.js": "8.0.1",
- "ganache-cli": "^6.7.0",
- "ganache-core": "^2.8.0",
- "immutable": "^4.0.0-rc.12",
- "jest": "^24.9.0",
- "jest-cli": "^24.9.0",
- "jest-codemods": "^0.22.0",
- "jest-junit": "^9.0.0",
+ "jest-diff": "^24.9.0",
+ "jest-junit": "^6.4.0",
"solium": "^1.2.5",
"solparse": "^2.2.8"
},
"dependencies": {
- "eth-saddle": "^0.0.30",
- "truffle-hdwallet-provider": "^1.0.17",
- "web3": "^1.2.4"
+ "eth-saddle": "0.1.3"
},
"resolutions": {
- "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz"
+ "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz",
+ "**/ganache-core": "https://github.com/compound-finance/ganache-core.git#compound"
}
}
diff --git a/saddle.config.js b/saddle.config.js
index 885022db2..6928cea96 100644
--- a/saddle.config.js
+++ b/saddle.config.js
@@ -1,7 +1,10 @@
module.exports = {
// solc: "solc", // Solc command to run
- solc_args: ['--allow-paths','contracts,tests/Contracts'], // Extra solc args
+ solc_args: [ // Extra solc args
+ '--allow-paths','contracts,tests/Contracts',
+ '--evm-version', 'istanbul'
+ ],
solc_shell_args: { // Args passed to `exec`, see:
maxBuffer: 1024 * 500000, // https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
shell: '/bin/bash'
@@ -9,14 +12,22 @@ module.exports = {
// build_dir: ".build", // Directory to place built contracts
// coverage_dir: "coverage", // Directory to place coverage files
// coverage_ignore: [], // List of files to ignore for coverage
- contracts: "{contracts,tests/Contracts}/*.sol", // Glob to match contract files
+ contracts: "{contracts,contracts/**,tests/Contracts}/*.sol",
+ // Glob to match contract files
+ trace: false, // Compile with debug artifacts
// TODO: Separate contracts for test?
- tests: ['**/tests/{,**/}*Test.js'], // Glob to match test files
+ tests: ['**/tests/{,**/}*Test.js'], // Glob to match test files
networks: { // Define configuration for each network
development: {
- providers: [ // How to load provider (processed in order)
- {env: "PROVIDER"}, // Try to load Http provider from `PROVIDER` env variable (e.g. env PROVIDER=http://...)
- {http: "http://127.0.0.1:8545"} // Fallback to localhost provider
+ providers: [
+ {env: "PROVIDER"},
+ {ganache: {
+ gasLimit: 20000000,
+ gasPrice: 20000,
+ defaultBalanceEther: 1000000000,
+ allowUnlimitedContractSize: true,
+ hardfork: 'istanbul'
+ }}
],
web3: { // Web3 options for immediate confirmation in development mode
gas: [
@@ -39,12 +50,15 @@ module.exports = {
},
test: {
providers: [
- {ganache: {
- gasLimit: 20000000,
- gasPrice: 20000,
- defaultBalanceEther: 1000000000,
- allowUnlimitedContractSize: true
- }}
+ {
+ ganache: {
+ gasLimit: 200000000,
+ gasPrice: 20000,
+ defaultBalanceEther: 1000000000,
+ allowUnlimitedContractSize: true,
+ hardfork: 'istanbul'
+ }
+ }
],
web3: {
gas: [
@@ -64,31 +78,55 @@ module.exports = {
{env: "ACCOUNT"},
{unlocked: 0}
]
- }
- },
- rinkeby: {
- providers: [
- {env: "PROVIDER"},
- {file: "~/.ethereum/rinkeby-url"}, // Load from given file with contents as the URL (e.g. https://infura.io/api-key)
- {http: "https://rinkeby.infura.io"}
- ],
- web3: {
- gas: [
- {env: "GAS"},
- {default: "4600000"}
+ },
+ goerli: {
+ providers: [
+ {env: "PROVIDER"},
+ {file: "~/.ethereum/goerli-url"}, // Load from given file with contents as the URL (e.g. https://infura.io/api-key)
],
- gas_price: [
- {env: "GAS_PRICE"},
- {default: "12000000000"}
+ web3: {
+ gas: [
+ {env: "GAS"},
+ {default: "6700000"}
+ ],
+ gas_price: [
+ {env: "GAS_PRICE"},
+ {default: "12000000000"}
+ ],
+ options: {
+ transactionConfirmationBlocks: 1,
+ transactionBlockTimeout: 5
+ }
+ },
+ accounts: [
+ {env: "ACCOUNT"},
+ {file: "~/.ethereum/goerli"} // Load from given file with contents as the private key (e.g. 0x...)
+ ]
+ },
+ rinkeby: {
+ providers: [
+ {env: "PROVIDER"},
+ {file: "~/.ethereum/rinkeby-url"}, // Load from given file with contents as the URL (e.g. https://infura.io/api-key)
+ {http: "https://rinkeby.infura.io"}
],
- options: {
- transactionConfirmationBlocks: 1,
- transactionBlockTimeout: 5
- }
+ web3: {
+ gas: [
+ {env: "GAS"},
+ {default: "4600000"}
+ ],
+ gas_price: [
+ {env: "GAS_PRICE"},
+ {default: "12000000000"}
+ ],
+ options: {
+ transactionConfirmationBlocks: 1,
+ transactionBlockTimeout: 5
+ }
+ },
+ accounts: [
+ {env: "ACCOUNT"},
+ {file: "~/.ethereum/rinkeby"} // Load from given file with contents as the private key (e.g. 0x...)
+ ]
},
- accounts: [
- {env: "ACCOUNT"},
- {file: "~/.ethereum/rinkeby"} // Load from given file with contents as the private key (e.g. 0x...)
- ]
}
}
diff --git a/scenario/package.json b/scenario/package.json
index 28382e643..9b4fb8fa9 100644
--- a/scenario/package.json
+++ b/scenario/package.json
@@ -1,13 +1,12 @@
{
- "name": "compound-money-market",
+ "name": "compound-scenarios",
"version": "0.2.1",
- "description": "The Compound Money Market",
+ "description": "The Compound Scenario Runner",
"main": "index.js",
"scripts": {
- "build": "./script/webpack",
- "postinstall": "rm node_modules/ganache-core/typings/index.d.ts"
+ "build": "./script/webpack"
},
- "repository": "git@github.com:compound-finance/money-market.git",
+ "repository": "git@github.com:compound-finance/compound-protocol.git",
"author": "Compound Finance",
"license": "UNLICENSED",
"devDependencies": {
@@ -22,12 +21,14 @@
},
"dependencies": {
"bignumber.js": "8.0.1",
- "eth-saddle": "^0.0.30",
+ "eth-saddle": "0.1.3",
"ethers": "^4.0.0-beta.1",
- "ganache-core": "https://github.com/trufflesuite/ganache-core.git",
"immutable": "^4.0.0-rc.12",
"truffle-flattener": "^1.3.0",
- "truffle-hdwallet-provider": "1.0.5",
"web3": "^1.2.4"
+ },
+ "resolutions": {
+ "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz",
+ "**/ganache-core": "https://github.com/compound-finance/ganache-core.git#compound"
}
}
diff --git a/scenario/script/repl b/scenario/script/repl
index 2ec33eddd..af71c6471 100755
--- a/scenario/script/repl
+++ b/scenario/script/repl
@@ -7,11 +7,13 @@ tsc_root="$dir/.."
proj_root="$dir/../.."
networks_root="$dir/../../networks"
network=${NETWORK:-development}
-script="$SCRIPT"
+script=()
verbose="$VERBOSE"
dry_run="$DRY_RUN"
no_tsc="$NO_TSC"
+[ -n "$SCRIPT" ] && script+=("$SCRIPT")
+
usage() { echo "$0 usage:" && grep ".)\ #" $0; exit 0; }
while getopts ":hdn:e:s:vt" arg; do
case $arg in
@@ -54,4 +56,4 @@ done
[[ -z $no_tsc ]] && "$dir/tsc"
[[ -z $no_compile ]] && "$proj_root/script/compile"
-proj_root="$proj_root" env_vars="$env_vars" dry_run="$dry_run" script="$script" network="$network" verbose="$verbose" node "$tsc_root/.tsbuilt/repl.js"
+proj_root="$proj_root" env_vars="$env_vars" dry_run="$dry_run" script="$(IFS=, ; echo "${script[*]}")" network="$network" verbose="$verbose" node "$tsc_root/.tsbuilt/repl.js"
diff --git a/scenario/src/Accounts.ts b/scenario/src/Accounts.ts
index 2845c5d75..63070f7f6 100644
--- a/scenario/src/Accounts.ts
+++ b/scenario/src/Accounts.ts
@@ -12,6 +12,7 @@ export const accountMap = {
"geoff": 2,
"third": 2,
+ "guardian": 2,
"torrey": 3,
"fourth": 3,
diff --git a/scenario/src/Builder/CTokenBuilder.ts b/scenario/src/Builder/CTokenBuilder.ts
index 1f171a2fc..f998d3e0b 100644
--- a/scenario/src/Builder/CTokenBuilder.ts
+++ b/scenario/src/Builder/CTokenBuilder.ts
@@ -53,7 +53,7 @@ export async function buildCToken(
`
#### CErc20Delegator
- * "CErc20Delegator symbol: name: underlying: comptroller: interestRateModel: initialExchangeRate: decimals: admin: implementation: becomeImplementationData:" - A CToken Scenario for local testing
+ * "CErc20Delegator symbol: name: underlying: comptroller: interestRateModel: initialExchangeRate: decimals: admin: implementation: becomeImplementationData:" - The real deal CToken
* E.g. "CToken Deploy CErc20Delegator cDAI \"Compound DAI\" (Erc20 DAI Address) (Comptroller Address) (InterestRateModel Address) 1.0 8 Geoff (CToken CDaiDelegate Address) "0x0123434anyByTes314535q" "
`,
'CErc20Delegator',
diff --git a/scenario/src/Builder/CompBuilder.ts b/scenario/src/Builder/CompBuilder.ts
new file mode 100644
index 000000000..0d23cf5d1
--- /dev/null
+++ b/scenario/src/Builder/CompBuilder.ts
@@ -0,0 +1,110 @@
+import { Event } from '../Event';
+import { World, addAction } from '../World';
+import { Comp, CompScenario } from '../Contract/Comp';
+import { Invokation } from '../Invokation';
+import { getAddressV } from '../CoreValue';
+import { StringV, AddressV } from '../Value';
+import { Arg, Fetcher, getFetcherValue } from '../Command';
+import { storeAndSaveContract } from '../Networks';
+import { getContract } from '../Contract';
+
+const CompContract = getContract('Comp');
+const CompScenarioContract = getContract('CompScenario');
+
+export interface TokenData {
+ invokation: Invokation;
+ contract: string;
+ address?: string;
+ symbol: string;
+ name: string;
+ decimals?: number;
+}
+
+export async function buildComp(
+ world: World,
+ from: string,
+ params: Event
+): Promise<{ world: World; comp: Comp; tokenData: TokenData }> {
+ const fetchers = [
+ new Fetcher<{ account: AddressV }, TokenData>(
+ `
+ #### Scenario
+
+ * "Comp Deploy Scenario account:" - Deploys Scenario Comp Token
+ * E.g. "Comp Deploy Scenario Geoff"
+ `,
+ 'Scenario',
+ [
+ new Arg("account", getAddressV),
+ ],
+ async (world, { account }) => {
+ return {
+ invokation: await CompScenarioContract.deploy(world, from, [account.val]),
+ contract: 'CompScenario',
+ symbol: 'COMP',
+ name: 'Compound Governance Token',
+ decimals: 18
+ };
+ }
+ ),
+
+ new Fetcher<{ account: AddressV }, TokenData>(
+ `
+ #### Comp
+
+ * "Comp Deploy account:" - Deploys Comp Token
+ * E.g. "Comp Deploy Geoff"
+ `,
+ 'Comp',
+ [
+ new Arg("account", getAddressV),
+ ],
+ async (world, { account }) => {
+ if (world.isLocalNetwork()) {
+ return {
+ invokation: await CompScenarioContract.deploy(world, from, [account.val]),
+ contract: 'CompScenario',
+ symbol: 'COMP',
+ name: 'Compound Governance Token',
+ decimals: 18
+ };
+ } else {
+ return {
+ invokation: await CompContract.deploy(world, from, [account.val]),
+ contract: 'Comp',
+ symbol: 'COMP',
+ name: 'Compound Governance Token',
+ decimals: 18
+ };
+ }
+ },
+ { catchall: true }
+ )
+ ];
+
+ let tokenData = await getFetcherValue("DeployComp", fetchers, world, params);
+ let invokation = tokenData.invokation;
+ delete tokenData.invokation;
+
+ if (invokation.error) {
+ throw invokation.error;
+ }
+
+ const comp = invokation.value!;
+ tokenData.address = comp._address;
+
+ world = await storeAndSaveContract(
+ world,
+ comp,
+ 'Comp',
+ invokation,
+ [
+ { index: ['Comp'], data: tokenData },
+ { index: ['Tokens', tokenData.symbol], data: tokenData }
+ ]
+ );
+
+ tokenData.invokation = invokation;
+
+ return { world, comp, tokenData };
+}
diff --git a/scenario/src/Builder/GovernorBuilder.ts b/scenario/src/Builder/GovernorBuilder.ts
new file mode 100644
index 000000000..196758f22
--- /dev/null
+++ b/scenario/src/Builder/GovernorBuilder.ts
@@ -0,0 +1,85 @@
+import { Event } from "../Event";
+import { World } from "../World";
+import { Governor } from "../Contract/Governor";
+import { Invokation } from "../Invokation";
+import { getAddressV, getStringV } from "../CoreValue";
+import { AddressV, StringV } from "../Value";
+import { Arg, Fetcher, getFetcherValue } from "../Command";
+import { storeAndSaveContract } from "../Networks";
+import { getContract } from "../Contract";
+
+const GovernorAlphaContract = getContract("GovernorAlpha");
+const GovernorAlphaScenarioContract = getContract("GovernorAlphaScenario");
+
+export interface GovernorData {
+ invokation: Invokation;
+ name: string;
+ contract: string;
+ address?: string;
+}
+
+export async function buildGovernor(
+ world: World,
+ from: string,
+ params: Event
+): Promise<{ world: World; governor: Governor; govData: GovernorData }> {
+ const fetchers = [
+ new Fetcher<
+ { name: StringV, timelock: AddressV, comp: AddressV, guardian: AddressV },
+ GovernorData
+ >(
+ `
+ #### GovernorAlpha
+
+ * "Governor Deploy Alpha name: timelock: comp: guardian:" - Deploys Compound Governor Alpha
+ * E.g. "Governor Deploy Alpha GovernorScenario (Address Timelock) (Address Comp) Guardian"
+ `,
+ "Alpha",
+ [
+ new Arg("name", getStringV),
+ new Arg("timelock", getAddressV),
+ new Arg("comp", getAddressV),
+ new Arg("guardian", getAddressV)
+ ],
+ async (world, { name, timelock, comp, guardian }) => {
+ return {
+ invokation: await GovernorAlphaContract.deploy(
+ world,
+ from,
+ [timelock.val, comp.val, guardian.val]
+ ),
+ name: name.val,
+ contract: "GovernorAlpha"
+ };
+ }
+ )
+ ];
+
+ let govData = await getFetcherValue(
+ "DeployGovernor",
+ fetchers,
+ world,
+ params
+ );
+ let invokation = govData.invokation;
+ delete govData.invokation;
+
+ if (invokation.error) {
+ throw invokation.error;
+ }
+
+ const governor = invokation.value!;
+ govData.address = governor._address;
+
+ world = await storeAndSaveContract(
+ world,
+ governor,
+ govData.name,
+ invokation,
+ [
+ { index: ["Governor", govData.name], data: govData },
+ ]
+ );
+
+ return { world, governor, govData };
+}
diff --git a/scenario/src/Contract.ts b/scenario/src/Contract.ts
index b5952da29..03b4ba14a 100644
--- a/scenario/src/Contract.ts
+++ b/scenario/src/Contract.ts
@@ -1,10 +1,9 @@
import * as path from 'path';
import * as crypto from 'crypto';
-import {World} from './World';
-import {Invokation} from './Invokation';
-import {ErrorReporter, NoErrorReporter} from './ErrorReporter';
-import {getNetworkPath, readFile} from './File';
-import { ABIItem } from 'web3-utils';
+import { World } from './World';
+import { Invokation } from './Invokation';
+import { readFile } from './File';
+import { AbiItem } from 'web3-utils';
export interface Raw {
data: string
@@ -24,10 +23,11 @@ export interface Event {
}
export interface Contract {
+ address: string
_address: string
name: string
methods: any
- _jsonInterface: ABIItem[]
+ _jsonInterface: AbiItem[]
constructorAbi?: string
getPastEvents: (event: string, options: { filter: object, fromBlock: number, toBlock: number | string }) => Event[]
}
@@ -62,8 +62,6 @@ class ContractStub {
inputs = [];
}
- const abi = world.web3.eth.abi.encodeParameters(inputs, args);
-
try {
let contract;
let receipt;
@@ -78,8 +76,8 @@ class ContractStub {
events: {}
};
} else {
- ({contract, receipt} = await world.saddle.deployFull(this.name, args, invokationOpts, world.web3));
- contract.constructorAbi = abi;
+ ({ contract, receipt } = await world.saddle.deployFull(this.name, args, invokationOpts, world.web3));
+ contract.constructorAbi = world.web3.eth.abi.encodeParameters(inputs, args);;
}
return new Invokation(contract, receipt, null, null);
@@ -110,7 +108,7 @@ export function setContractName(name: string, contract: Contract): Contract {
return contract;
}
-export async function getPastEvents(world: World, contract: Contract, name: string, event: string, filter: object={}): Promise {
+export async function getPastEvents(world: World, contract: Contract, name: string, event: string, filter: object = {}): Promise {
const block = world.getIn(['contractData', 'Blocks', name]);
if (!block) {
throw new Error(`Cannot get events when missing deploy block for ${name}`);
@@ -129,7 +127,7 @@ export async function decodeCall(world: World, contract: Contract, input: string
let funsMapped = contract._jsonInterface.reduce((acc, fun) => {
if (fun.type === 'function') {
- let functionAbi = `${fun.name}(${fun.inputs.map((i) => i.type).join(',')})`;
+ let functionAbi = `${fun.name}(${(fun.inputs || []).map((i) => i.type).join(',')})`;
let sig = world.web3.utils.sha3(functionAbi).slice(2, 10);
return {
@@ -158,18 +156,18 @@ export async function decodeCall(world: World, contract: Contract, input: string
}
// XXXS Handle
-async function getNetworkContract(world: World, name: string): Promise<{abi: any[], bin: string}> {
+async function getNetworkContract(world: World, name: string): Promise<{ abi: any[], bin: string }> {
let basePath = world.basePath || ""
let network = world.network || ""
let pizath = (name, ext) => path.join(basePath, '.build', `contracts.json`);
let abi, bin;
- if ( network == 'coverage' ) {
+ if (network == 'coverage') {
let json = await readFile(world, pizath(name, 'json'), null, JSON.parse);
abi = json.abi;
bin = json.bytecode.substr(2);
} else {
- let {networkContracts} = await getNetworkContracts(world);
+ let { networkContracts } = await getNetworkContracts(world);
let networkContract = networkContracts[name];
abi = JSON.parse(networkContract.abi);
bin = networkContract.bin;
@@ -183,7 +181,7 @@ async function getNetworkContract(world: World, name: string): Promise<{abi: any
}
}
-export async function getNetworkContracts(world: World): Promise<{networkContracts: object, version: string}> {
+export async function getNetworkContracts(world: World): Promise<{ networkContracts: object, version: string }> {
let basePath = world.basePath || ""
let network = world.network || ""
diff --git a/scenario/src/Contract/Comp.ts b/scenario/src/Contract/Comp.ts
new file mode 100644
index 000000000..53e1692a3
--- /dev/null
+++ b/scenario/src/Contract/Comp.ts
@@ -0,0 +1,41 @@
+import { Contract } from '../Contract';
+import { encodedNumber } from '../Encoding';
+import { Callable, Sendable } from '../Invokation';
+
+interface Checkpoint {
+ fromBlock: number;
+ votes: number;
+}
+
+export interface CompMethods {
+ name(): Callable;
+ symbol(): Callable;
+ decimals(): Callable;
+ totalSupply(): Callable;
+ balanceOf(address: string): Callable;
+ allowance(owner: string, spender: string): Callable;
+ approve(address: string, amount: encodedNumber): Sendable;
+ transfer(address: string, amount: encodedNumber): Sendable;
+ transferFrom(owner: string, spender: string, amount: encodedNumber): Sendable;
+ checkpoints(account: string, index: number): Callable;
+ numCheckpoints(account: string): Callable;
+ delegate(account: string): Sendable;
+ getCurrentVotes(account: string): Callable;
+ getPriorVotes(account: string, blockNumber: encodedNumber): Callable;
+ setBlockNumber(blockNumber: encodedNumber): Sendable;
+}
+
+export interface CompScenarioMethods extends CompMethods {
+ transferScenario(destinations: string[], amount: encodedNumber): Sendable;
+ transferFromScenario(froms: string[], amount: encodedNumber): Sendable;
+}
+
+export interface Comp extends Contract {
+ methods: CompMethods;
+ name: string;
+}
+
+export interface CompScenario extends Contract {
+ methods: CompScenarioMethods;
+ name: string;
+}
diff --git a/scenario/src/Contract/Counter.ts b/scenario/src/Contract/Counter.ts
new file mode 100644
index 000000000..81f553d14
--- /dev/null
+++ b/scenario/src/Contract/Counter.ts
@@ -0,0 +1,12 @@
+import { Contract } from '../Contract';
+import { encodedNumber } from '../Encoding';
+import { Callable, Sendable } from '../Invokation';
+
+export interface CounterMethods {
+ increment(by: encodedNumber): Sendable;
+}
+
+export interface Counter extends Contract {
+ methods: CounterMethods;
+ name: string;
+}
diff --git a/scenario/src/Contract/Governor.ts b/scenario/src/Contract/Governor.ts
new file mode 100644
index 000000000..c0af3242f
--- /dev/null
+++ b/scenario/src/Contract/Governor.ts
@@ -0,0 +1,53 @@
+import { Contract } from '../Contract';
+import { Callable, Sendable } from '../Invokation';
+import { encodedNumber } from '../Encoding';
+
+export interface Proposal {
+ id: number
+ proposer: string
+ eta: number
+ targets: string[]
+ values: number[]
+ signatures: string[]
+ calldatas: string[]
+ startBlock: number
+ endBlock: number
+ forVotes: number
+ againstVotes: number
+}
+
+export const proposalStateEnums = {
+ 0: "Pending",
+ 1: "Active",
+ 2: "Canceled",
+ 3: "Defeated",
+ 4: "Succeeded",
+ 5: "Queued",
+ 6: "Expired",
+ 7: "Executed"
+}
+
+export interface GovernorMethods {
+ guardian(): Callable;
+ propose(targets: string[], values: encodedNumber[], signatures: string[], calldatas: string[], description: string): Sendable
+ proposals(proposalId: number): Callable;
+ proposalCount(): Callable;
+ latestProposalIds(proposer: string): Callable;
+ getReceipt(proposalId: number, voter: string): Callable<{ hasVoted: boolean, support: boolean, votes: number }>;
+ castVote(proposalId: number, support: boolean): Sendable;
+ queue(proposalId: encodedNumber): Sendable;
+ execute(proposalId: encodedNumber): Sendable;
+ cancel(proposalId: encodedNumber): Sendable;
+ setBlockNumber(blockNumber: encodedNumber): Sendable;
+ setBlockTimestamp(blockTimestamp: encodedNumber): Sendable;
+ state(proposalId: encodedNumber): Callable;
+ __queueSetTimelockPendingAdmin(newPendingAdmin: string, eta: encodedNumber): Sendable;
+ __executeSetTimelockPendingAdmin(newPendingAdmin: string, eta: encodedNumber): Sendable;
+ __acceptAdmin(): Sendable;
+ __abdicate(): Sendable;
+}
+
+export interface Governor extends Contract {
+ methods: GovernorMethods;
+ name: string;
+}
diff --git a/scenario/src/Contract/Timelock.ts b/scenario/src/Contract/Timelock.ts
index 081fc050f..3ea7a284c 100644
--- a/scenario/src/Contract/Timelock.ts
+++ b/scenario/src/Contract/Timelock.ts
@@ -35,6 +35,7 @@ interface TimelockMethods {
blockTimestamp(): Callable;
harnessFastForward(seconds: encodedNumber): Sendable;
harnessSetBlockTimestamp(seconds: encodedNumber): Sendable;
+ harnessSetAdmin(admin: string): Sendable;
}
export interface Timelock extends Contract {
diff --git a/scenario/src/ContractLookup.ts b/scenario/src/ContractLookup.ts
index 338cb0c65..b7065588f 100644
--- a/scenario/src/ContractLookup.ts
+++ b/scenario/src/ContractLookup.ts
@@ -7,9 +7,11 @@ import { Contract } from './Contract';
import { mustString } from './Utils';
import { CErc20Delegate } from './Contract/CErc20Delegate';
+import { Comp } from './Contract/Comp';
import { Comptroller } from './Contract/Comptroller';
import { ComptrollerImpl } from './Contract/ComptrollerImpl';
import { CToken } from './Contract/CToken';
+import { Governor } from './Contract/Governor';
import { Erc20 } from './Contract/Erc20';
import { InterestRateModel } from './Contract/InterestRateModel';
import { PriceOracle } from './Contract/PriceOracle';
@@ -103,6 +105,10 @@ export function getErc20Address(world: World, erc20Arg: string): string {
return getContractDataString(world, [['Tokens', erc20Arg, 'address']]);
}
+export function getGovernorAddress(world: World, governorArg: string): string {
+ return getContractDataString(world, [['Governor', governorArg, 'address']]);
+}
+
export async function getPriceOracleProxy(world: World): Promise {
return getWorldContract(world, [['Contracts', 'PriceOracleProxy']]);
}
@@ -111,6 +117,33 @@ export async function getPriceOracle(world: World): Promise {
return getWorldContract(world, [['Contracts', 'PriceOracle']]);
}
+export async function getComp(
+ world: World,
+ compArg: Event
+): Promise {
+ return getWorldContract(world, [['Comp', 'address']]);
+}
+
+export async function getCompData(
+ world: World,
+ compArg: string
+): Promise<[Comp, string, Map]> {
+ let contract = await getComp(world, (compArg));
+ let data = getContractData(world, [['Comp', compArg]]);
+
+ return [contract, compArg, >(data)];
+}
+
+export async function getGovernorData(
+ world: World,
+ governorArg: string
+): Promise<[Governor, string, Map]> {
+ let contract = getWorldContract(world, [['Governor', governorArg, 'address']]);
+ let data = getContractData(world, [['Governor', governorArg]]);
+
+ return [contract, governorArg, >(data)];
+}
+
export async function getInterestRateModel(
world: World,
interestRateModelArg: Event
diff --git a/scenario/src/CoreEvent.ts b/scenario/src/CoreEvent.ts
index 97c4791ed..5b22937f2 100644
--- a/scenario/src/CoreEvent.ts
+++ b/scenario/src/CoreEvent.ts
@@ -26,8 +26,10 @@ import { maximillionCommands, processMaximillionEvent } from './Event/Maximillio
import { invariantCommands, processInvariantEvent } from './Event/InvariantEvent';
import { expectationCommands, processExpectationEvent } from './Event/ExpectationEvent';
import { timelockCommands, processTimelockEvent } from './Event/TimelockEvent';
+import { compCommands, processCompEvent } from './Event/CompEvent';
+import { governorCommands, processGovernorEvent } from './Event/GovernorEvent';
import { processTrxEvent, trxCommands } from './Event/TrxEvent';
-import { fetchers, getCoreValue } from './CoreValue';
+import { getFetchers, getCoreValue } from './CoreValue';
import { formatEvent } from './Formatter';
import { fallback } from './Invokation';
import { sendRPC, sleep } from './Utils';
@@ -36,6 +38,9 @@ import { encodedNumber } from './Encoding';
import { printHelp } from './Help';
import { loadContracts } from './Networks';
import { fork } from './Hypothetical';
+import { buildContractEvent } from './EventBuilder';
+import { Counter } from './Contract/Counter';
+import Web3 from 'web3';
export class EventProcessingError extends Error {
error: Error;
@@ -47,6 +52,7 @@ export class EventProcessingError extends Error {
this.error = error;
this.event = event;
this.message = `Error: \`${this.error.toString()}\` when processing \`${formatEvent(this.event)}\``;
+ this.stack = error.stack;
}
}
@@ -109,7 +115,7 @@ async function sendEther(world: World, from: string, to: string, amount: encoded
return world;
}
-export const commands = [
+export const commands: (View | ((world: World) => Promise>))[] = [
new View<{ n: NumberV }>(
`
#### History
@@ -157,22 +163,23 @@ export const commands = [
return world;
}
),
- new View<{ res: Value }>(
- `
- #### Read
+ async (world: World) =>
+ new View<{ res: Value }>(
+ `
+ #### Read
- * "Read ..." - Reads given value and prints result
- * E.g. "Read CToken cBAT ExchangeRateStored" - Returns exchange rate of cBAT
- `,
- 'Read',
- [new Arg('res', getCoreValue, { variadic: true })],
- async (world, { res }) => {
- world.printer.printValue(res);
+ * "Read ..." - Reads given value and prints result
+ * E.g. "Read CToken cBAT ExchangeRateStored" - Returns exchange rate of cBAT
+ `,
+ 'Read',
+ [new Arg('res', getCoreValue, { variadic: true })],
+ async (world, { res }) => {
+ world.printer.printValue(res);
- return world;
- },
- { subExpressions: fetchers }
- ),
+ return world;
+ },
+ { subExpressions: (await getFetchers(world)).fetchers }
+ ),
new View<{ message: StringV }>(
`
#### Print
@@ -326,6 +333,21 @@ export const commands = [
}
),
+ new View<{ timestamp: NumberV }>(
+ `
+ #### FreezeTime
+
+ * "FreezeTime timestamp:" - Freeze Ganache evm time to specific timestamp
+ * E.g. "FreezeTime 1573597400"
+ `,
+ 'FreezeTime',
+ [new Arg('timestamp', getNumberV)],
+ async (world, { timestamp }) => {
+ await sendRPC(world, 'evm_freezeTime', [timestamp.val]);
+ return world;
+ }
+ ),
+
new View<{}>(
`
#### MineBlock
@@ -341,6 +363,39 @@ export const commands = [
}
),
+ new View<{ blockNumber: NumberV }>(
+ `
+ #### SetBlockNumber
+
+ * "SetBlockNumber 10" - Increase Ganache evm block number
+ * E.g. "SetBlockNumber 10"
+ `,
+ 'SetBlockNumber',
+ [new Arg('blockNumber', getNumberV)],
+ async (world, { blockNumber }) => {
+
+ await sendRPC(world, 'evm_mineBlockNumber', [blockNumber.val])
+ return world;
+ }
+ ),
+
+ new View<{ blockNumber: NumberV }>(
+ `
+ #### AdvanceBlocks
+
+ * "AdvanceBlocks 10" - Increase Ganache latest + block number
+ * E.g. "AdvanceBlocks 10"
+ `,
+ 'AdvanceBlocks',
+ [new Arg('blockNumber', getNumberV)],
+ async (world, { blockNumber }) => {
+
+ let { result: num }: any = await sendRPC(world, 'eth_blockNumber', [])
+ await sendRPC(world, 'evm_mineBlockNumber', [Number(blockNumber.val) + parseInt(num)])
+ return world;
+ }
+ ),
+
new View<{}>(
`
#### Inspect
@@ -656,6 +711,38 @@ export const commands = [
{ subExpressions: timelockCommands() }
),
+ new Command<{ event: EventV }>(
+ `
+ #### Comp
+
+ * "Comp ...event" - Runs given comp event
+ * E.g. "Comp Deploy"
+ `,
+ 'Comp',
+ [new Arg('event', getEventV, { variadic: true })],
+ (world, from, { event }) => {
+ return processCompEvent(world, event.val, from);
+ },
+ { subExpressions: compCommands() }
+ ),
+
+ new Command<{ event: EventV }>(
+ `
+ #### Governor
+
+ * "Governor ...event" - Runs given governor event
+ * E.g. "Governor Deploy Alpha"
+ `,
+ 'Governor',
+ [new Arg('event', getEventV, { variadic: true })],
+ (world, from, { event }) => {
+ return processGovernorEvent(world, event.val, from);
+ },
+ { subExpressions: governorCommands() }
+ ),
+
+ buildContractEvent("Counter"),
+
new View<{ event: EventV }>(
`
#### Help
@@ -667,6 +754,7 @@ export const commands = [
[new Arg('event', getEventV, { variadic: true })],
async (world, { event }) => {
world.printer.printLine('');
+ let { commands } = await getCommands(world);
printHelp(world.printer, event.val, commands);
return world;
@@ -674,6 +762,23 @@ export const commands = [
)
];
+async function getCommands(world: World) {
+ if (world.commands) {
+ return { world, commands: world.commands };
+ }
+
+ let allCommands = await Promise.all(commands.map((command) => {
+ if (typeof (command) === 'function') {
+ return command(world);
+ } else {
+ return Promise.resolve(command);
+ }
+ }));
+
+ return { world: world.set('commands', allCommands), commands: allCommands };
+}
+
export async function processCoreEvent(world: World, event: Event, from: string | null): Promise {
- return await processCommandEvent('Core', commands, world, event, from);
+ let { world: nextWorld, commands } = await getCommands(world);
+ return await processCommandEvent('Core', commands, nextWorld, event, from);
}
diff --git a/scenario/src/CoreValue.ts b/scenario/src/CoreValue.ts
index 0bb8160ee..78e0ca27d 100644
--- a/scenario/src/CoreValue.ts
+++ b/scenario/src/CoreValue.ts
@@ -3,6 +3,7 @@ import { World } from './World';
import {
AddressV,
AnythingV,
+ ArrayV,
BoolV,
EventV,
ExpNumberV,
@@ -29,10 +30,13 @@ import { getPriceOracleValue, priceOracleFetchers } from './Value/PriceOracleVal
import { getPriceOracleProxyValue, priceOracleProxyFetchers } from './Value/PriceOracleProxyValue';
import { getTimelockValue, timelockFetchers, getTimelockAddress } from './Value/TimelockValue';
import { getMaximillionValue, maximillionFetchers } from './Value/MaximillionValue';
+import { getCompValue, compFetchers } from './Value/CompValue';
+import { getGovernorValue, governorFetchers } from './Value/GovernorValue';
import { getAddress } from './ContractLookup';
-import { mustArray } from './Utils';
+import { mustArray, sendRPC } from './Utils';
import { toEncodableNum } from './Encoding';
import { BigNumber } from 'bignumber.js';
+import { buildContractFetcher } from './EventBuilder';
const expMantissa = new BigNumber('1000000000000000000');
@@ -83,7 +87,7 @@ export async function mapValue(
}
if (!(val instanceof type)) {
- throw new Error(`Expected ${type.name} from ${event.toString()}, got: ${val.toString()}`);
+ throw new Error(`Expected "${type.name}" from event "${event.toString()}", was: "${val.toString()}"`);
}
// We just did a typecheck above...
@@ -183,6 +187,15 @@ export async function getMapV(world: World, event: Event): Promise {
return new MapV(res);
}
+export function getArrayV(fetcher: (World, Event) => Promise): (World, Event) => Promise> {
+ return async (world: World, event: Event): Promise> => {
+ const res = await Promise.all(
+ mustArray(event).filter((x) => x !== 'List').map(e => fetcher(world, e))
+ );
+ return new ArrayV(res);
+ }
+}
+
export async function getStringV(world: World, event: Event): Promise {
return mapValue(world, event, str => new StringV(str), getCoreValue, StringV);
}
@@ -193,7 +206,7 @@ async function getEtherBalance(world: World, address: string): Promise
return new NumberV(balance);
}
-export const fetchers = [
+const fetchers = [
new Fetcher<{}, BoolV>(
`
#### True
@@ -368,7 +381,7 @@ export const fetchers = [
new Fetcher<
{ addr: AddressV; slot: NumberV; start: NumberV; valType: StringV },
- BoolV | AddressV | ExpNumberV | undefined
+ BoolV | AddressV | ExpNumberV | NothingV
>(
`
#### StorageAt
@@ -414,13 +427,15 @@ export const fetchers = [
} else {
return new ExpNumberV(parsed.toString(), 1);
}
+ default:
+ return new NothingV();
}
}
),
new Fetcher<
{ addr: AddressV; slot: NumberV; key: AddressV; nestedKey: AddressV; valType: StringV },
- ListV | undefined
+ ListV | NothingV
>(
`
#### StorageAtNestedMapping
@@ -472,13 +487,15 @@ export const fetchers = [
new ExpNumberV(collateralFactor.toString(), 1e18),
new BoolV(userInMarket == '0x01')
]);
+ default:
+ return new NothingV();
}
}
),
new Fetcher<
{ addr: AddressV; slot: NumberV; key: AddressV; valType: StringV },
- AddressV | BoolV | ExpNumberV | ListV | undefined
+ AddressV | BoolV | ExpNumberV | ListV | NothingV
>(
`
#### StorageAtMapping
@@ -534,10 +551,23 @@ export const fetchers = [
} else {
return new ExpNumberV(parsed.toString(), 1);
}
+ default:
+ return new NothingV();
}
}
),
-
+ new Fetcher<{}, NumberV>(
+ `
+ #### GetBlockNumber
+ * GetBlockNumber
+ `,
+ 'GetBlockNumber',
+ [],
+ async (world, {}) => {
+ let { result: num }: any = await sendRPC(world, 'eth_blockNumber', []);
+ return new NumberV(parseInt(num));
+ }
+ ),
new Fetcher<{}, AddressV>(
`
#### LastContract
@@ -546,7 +576,28 @@ export const fetchers = [
`,
'LastContract',
[],
- async (world, {}) => new AddressV(world.get('lastContract'))
+ async (world, { }) => new AddressV(world.get('lastContract'))
+ ),
+ new Fetcher<{}, NumberV>(
+ `
+ #### LastBlock
+
+ * "LastBlock" - The block of the last transaction
+ `,
+ 'LastBlock',
+ [],
+ async (world, { }) => {
+ let invokation = world.get('lastInvokation');
+ if (!invokation) {
+ throw new Error(`Expected last invokation for "lastBlock" but none found.`);
+ }
+
+ if (!invokation.receipt) {
+ throw new Error(`Expected last invokation to have receipt for "lastBlock" but none found.`);
+ }
+
+ return new NumberV(invokation.receipt.blockNumber);
+ }
),
new Fetcher<{}, NumberV>(
`
@@ -673,6 +724,18 @@ export const fetchers = [
const now = Math.floor(Date.now() / 1000);
return new NumberV(secondsBn.plus(now).toFixed(0));
}
+ ),
+ new Fetcher<{}, NumberV>(
+ `
+ #### Now
+
+ * "Now seconds:" - Returns current timestamp
+ `,
+ 'Now',
+ [],
+ async (world, {}) => {
+ return new NumberV(Math.floor(Date.now() / 1000));
+ }
),
new Fetcher<{}, StringV>(
`
@@ -876,9 +939,48 @@ export const fetchers = [
[new Arg('res', getMCDValue, { variadic: true })],
async (world, { res }) => res,
{ subExpressions: mcdFetchers() }
- )
+ ),
+ new Fetcher<{ res: Value }, Value>(
+ `
+ #### Comp
+
+ * "Comp ...compArgs" - Returns Comp value
+ `,
+ 'Comp',
+ [new Arg('res', getCompValue, { variadic: true })],
+ async (world, { res }) => res,
+ { subExpressions: compFetchers() }
+ ),
+ new Fetcher<{ res: Value }, Value>(
+ `
+ #### Governor
+
+ * "Governor ...governorArgs" - Returns Governor value
+ `,
+ 'Governor',
+ [new Arg('res', getGovernorValue, { variadic: true })],
+ async (world, { res }) => res,
+ { subExpressions: governorFetchers() }
+ ),
];
+let contractFetchers = [
+ "Counter"
+];
+
+export async function getFetchers(world: World) {
+ if (world.fetchers) {
+ return { world, fetchers: world.fetchers };
+ }
+
+ let allFetchers = fetchers.concat(await Promise.all(contractFetchers.map((contractName) => {
+ return buildContractFetcher(world, contractName);
+ })));
+
+ return { world: world.set('fetchers', allFetchers), fetchers: allFetchers };
+}
+
export async function getCoreValue(world: World, event: Event): Promise {
- return await getFetcherValue('Core', fetchers, world, event);
+ let {world: nextWorld, fetchers} = await getFetchers(world);
+ return await getFetcherValue('Core', fetchers, nextWorld, event);
}
diff --git a/scenario/src/Event/AssertionEvent.ts b/scenario/src/Event/AssertionEvent.ts
index cc13cbd74..341584309 100644
--- a/scenario/src/Event/AssertionEvent.ts
+++ b/scenario/src/Event/AssertionEvent.ts
@@ -1,10 +1,10 @@
-import {Event} from '../Event';
-import {fail, World} from '../World';
-import {mustArray} from '../Utils';
-import {getCoreValue} from '../CoreValue';
-import {formatError} from '../Formatter';
-import {Failure, Invokation, InvokationRevertFailure} from '../Invokation';
-import {formatEvent} from '../Formatter';
+import { Event } from '../Event';
+import { fail, World } from '../World';
+import { mustArray } from '../Utils';
+import { getCoreValue } from '../CoreValue';
+import { formatError } from '../Formatter';
+import { Failure, Invokation, InvokationRevertFailure } from '../Invokation';
+import { formatEvent } from '../Formatter';
import {
getAddressV,
getBoolV,
@@ -23,7 +23,7 @@ import {
StringV,
Value
} from '../Value';
-import {Arg, View, processCommandEvent} from '../Command';
+import { Arg, View, processCommandEvent } from '../Command';
async function assertApprox(world: World, given: NumberV, expected: NumberV, tolerance: NumberV): Promise {
if (Math.abs(Number(expected.sub(given).div(expected).val)) > Number(tolerance.val)) {
@@ -175,6 +175,18 @@ async function assertReadError(world: World, event: Event, message: string, isRe
return world;
}
+function getLogValue(value: any): Value {
+ if (typeof value === 'number' || (typeof value === 'string' && value.match(/^[0-9]+$/))) {
+ return new NumberV(Number(value));
+ } else if (typeof value === 'string') {
+ return new StringV(value);
+ } else if (typeof value === 'boolean') {
+ return new BoolV(value);
+ } else {
+ throw new Error('Unknown type of log parameter: ${value}');
+ }
+}
+
async function assertLog(world: World, event: string, keyValues: MapV): Promise {
if (!world.lastInvokation) {
return fail(world, `Expected log message "${event}" from contract execution, but world missing any invokations.`);
@@ -185,21 +197,51 @@ async function assertLog(world: World, event: string, keyValues: MapV): Promise<
if (!log) {
const events = Object.keys(world.lastInvokation.receipt.events || {}).join(', ');
-
return fail(world, `Expected log with event \`${event}\`, found logs with events: [${events}]`);
}
- Object.entries(keyValues.val).forEach(([key, value]) => {
- if (log.returnValues[key] === undefined) {
- fail(world, `Expected log to have param for \`${key}\``);
- } else {
- let logValue = new StringV(log.returnValues[key]);
+ if (Array.isArray(log)) {
+ const found = log.find(_log => {
+ return Object.entries(keyValues.val).reduce((previousValue, currentValue) => {
+ const [key, value] = currentValue;
+ if (previousValue) {
+ if (_log.returnValues[key] === undefined) {
+ return false;
+ } else {
+ let logValue = getLogValue(_log.returnValues[key]);
+
+ if (!logValue.compareTo(world, value)) {
+ return false;
+ }
+
+ return true;
+ }
+ }
+ return previousValue;
+ }, true as boolean);
+ });
+
+ if (!found) {
+ const eventExpected = Object.entries(keyValues.val).join(', ');
+ const eventDetailsFound = log.map(_log => {
+ return Object.entries(_log.returnValues);
+ });
+ return fail(world, `Expected log with event \`${eventExpected}\`, found logs for this event with: [${eventDetailsFound}]`);
+ }
- if (!value.compareTo(world, logValue)) {
- fail(world, `Expected log to have param \`${key}\` to match ${value.toString()}, but got ${logValue.toString()}`);
+ } else {
+ Object.entries(keyValues.val).forEach(([key, value]) => {
+ if (log.returnValues[key] === undefined) {
+ fail(world, `Expected log to have param for \`${key}\``);
+ } else {
+ let logValue = getLogValue(log.returnValues[key]);
+
+ if (!logValue.compareTo(world, value)) {
+ fail(world, `Expected log to have param \`${key}\` to match ${value.toString()}, but got ${logValue.toString()}`);
+ }
}
- }
- });
+ });
+ }
return world;
}
@@ -207,7 +249,7 @@ async function assertLog(world: World, event: string, keyValues: MapV): Promise<
export function assertionCommands() {
return [
- new View<{given: NumberV, expected: NumberV, tolerance: NumberV}>(`
+ new View<{ given: NumberV, expected: NumberV, tolerance: NumberV }>(`
#### Approx
* "Approx given: expected: tolerance:" - Asserts that given approximately matches expected.
@@ -219,12 +261,12 @@ export function assertionCommands() {
[
new Arg("given", getNumberV),
new Arg("expected", getNumberV),
- new Arg("tolerance", getNumberV, {default: new NumberV(0.001)})
+ new Arg("tolerance", getNumberV, { default: new NumberV(0.001) })
],
- (world, {given, expected, tolerance}) => assertApprox(world, given, expected, tolerance)
+ (world, { given, expected, tolerance }) => assertApprox(world, given, expected, tolerance)
),
- new View<{given: Value, expected: Value}>(`
+ new View<{ given: Value, expected: Value }>(`
#### Equal
* "Equal given: expected:" - Asserts that given matches expected.
@@ -237,10 +279,10 @@ export function assertionCommands() {
new Arg("given", getCoreValue),
new Arg("expected", getCoreValue)
],
- (world, {given, expected}) => assertEqual(world, given, expected)
+ (world, { given, expected }) => assertEqual(world, given, expected)
),
- new View<{given: Value, expected: Value}>(`
+ new View<{ given: Value, expected: Value }>(`
#### LessThan
* "given: LessThan expected:" - Asserts that given matches expected.
@@ -251,11 +293,11 @@ export function assertionCommands() {
new Arg("given", getCoreValue),
new Arg("expected", getCoreValue)
],
- (world, {given, expected}) => assertLessThan(world, given, expected),
- {namePos: 1}
+ (world, { given, expected }) => assertLessThan(world, given, expected),
+ { namePos: 1 }
),
- new View<{given: Value}>(`
+ new View<{ given: Value }>(`
#### True
* "True given:" - Asserts that given is true.
@@ -265,10 +307,10 @@ export function assertionCommands() {
[
new Arg("given", getCoreValue)
],
- (world, {given}) => assertEqual(world, given, new BoolV(true))
+ (world, { given }) => assertEqual(world, given, new BoolV(true))
),
- new View<{given: Value}>(`
+ new View<{ given: Value }>(`
#### False
* "False given:" - Asserts that given is false.
@@ -278,9 +320,9 @@ export function assertionCommands() {
[
new Arg("given", getCoreValue)
],
- (world, {given}) => assertEqual(world, given, new BoolV(false))
+ (world, { given }) => assertEqual(world, given, new BoolV(false))
),
- new View<{event: EventV, message: StringV}>(`
+ new View<{ event: EventV, message: StringV }>(`
#### ReadRevert
* "ReadRevert event: message:" - Asserts that reading the given value reverts with given message.
@@ -291,10 +333,10 @@ export function assertionCommands() {
new Arg("event", getEventV),
new Arg("message", getStringV)
],
- (world, {event, message}) => assertReadError(world, event.val, message.val, true)
+ (world, { event, message }) => assertReadError(world, event.val, message.val, true)
),
- new View<{event: EventV, message: StringV}>(`
+ new View<{ event: EventV, message: StringV }>(`
#### ReadError
* "ReadError event: message:" - Asserts that reading the given value throws given error
@@ -305,10 +347,10 @@ export function assertionCommands() {
new Arg("event", getEventV),
new Arg("message", getStringV)
],
- (world, {event, message}) => assertReadError(world, event.val, message.val, false)
+ (world, { event, message }) => assertReadError(world, event.val, message.val, false)
),
- new View<{error: StringV, info: StringV, detail: StringV}>(`
+ new View<{ error: StringV, info: StringV, detail: StringV }>(`
#### Failure
* "Failure error: info: detail:" - Asserts that last transaction had a graceful failure with given error, info and detail.
@@ -319,12 +361,12 @@ export function assertionCommands() {
[
new Arg("error", getStringV),
new Arg("info", getStringV),
- new Arg("detail", getStringV, {default: new StringV("0")}),
+ new Arg("detail", getStringV, { default: new StringV("0") }),
],
- (world, {error, info, detail}) => assertFailure(world, new Failure(error.val, info.val, detail.val))
+ (world, { error, info, detail }) => assertFailure(world, new Failure(error.val, info.val, detail.val))
),
- new View<{error: StringV, message: StringV}>(`
+ new View<{ error: StringV, message: StringV }>(`
#### RevertFailure
* "RevertFailure error: message:" - Assert last transaction reverted with a message beginning with an error code
@@ -335,22 +377,22 @@ export function assertionCommands() {
new Arg("error", getStringV),
new Arg("message", getStringV),
],
- (world, {error, message}) => assertRevertFailure(world, error.val, message.val)
+ (world, { error, message }) => assertRevertFailure(world, error.val, message.val)
),
- new View<{message: StringV}>(`
+ new View<{ message: StringV }>(`
#### Revert
* "Revert message:" - Asserts that the last transaction reverted.
`,
"Revert",
[
- new Arg("message", getStringV, {default: new StringV("revert")}),
+ new Arg("message", getStringV, { default: new StringV("revert") }),
],
- (world, {message}) => assertRevert(world, message.val)
+ (world, { message }) => assertRevert(world, message.val)
),
- new View<{message: StringV}>(`
+ new View<{ message: StringV }>(`
#### Error
* "Error message:" - Asserts that the last transaction had the given error.
@@ -359,20 +401,20 @@ export function assertionCommands() {
[
new Arg("message", getStringV),
],
- (world, {message}) => assertError(world, message.val)
+ (world, { message }) => assertError(world, message.val)
),
- new View<{given: Value}>(`
+ new View<{ given: Value }>(`
#### Success
* "Success" - Asserts that the last transaction completed successfully (that is, did not revert nor emit graceful failure).
`,
"Success",
[],
- (world, {given}) => assertSuccess(world)
+ (world, { given }) => assertSuccess(world)
),
- new View<{name: StringV, params: MapV}>(`
+ new View<{ name: StringV, params: MapV }>(`
#### Log
* "Log name: (key: value:) ..." - Asserts that last transaction emitted log with given name and key-value pairs.
@@ -381,9 +423,9 @@ export function assertionCommands() {
"Log",
[
new Arg("name", getStringV),
- new Arg("params", getMapV, {variadic: true}),
+ new Arg("params", getMapV, { variadic: true }),
],
- (world, {name, params}) => assertLog(world, name.val, params)
+ (world, { name, params }) => assertLog(world, name.val, params)
)
];
}
diff --git a/scenario/src/Event/CompEvent.ts b/scenario/src/Event/CompEvent.ts
new file mode 100644
index 000000000..1f420131f
--- /dev/null
+++ b/scenario/src/Event/CompEvent.ts
@@ -0,0 +1,270 @@
+import { Event } from '../Event';
+import { addAction, World, describeUser } from '../World';
+import { Comp, CompScenario } from '../Contract/Comp';
+import { buildComp } from '../Builder/CompBuilder';
+import { invoke } from '../Invokation';
+import {
+ getAddressV,
+ getEventV,
+ getNumberV,
+ getStringV,
+} from '../CoreValue';
+import {
+ AddressV,
+ EventV,
+ NumberV,
+ StringV
+} from '../Value';
+import { Arg, Command, processCommandEvent, View } from '../Command';
+import { getComp } from '../ContractLookup';
+import { NoErrorReporter } from '../ErrorReporter';
+import { verify } from '../Verify';
+import { encodedNumber } from '../Encoding';
+
+async function genComp(world: World, from: string, params: Event): Promise {
+ let { world: nextWorld, comp, tokenData } = await buildComp(world, from, params);
+ world = nextWorld;
+
+ world = addAction(
+ world,
+ `Deployed Comp (${comp.name}) to address ${comp._address}`,
+ tokenData.invokation
+ );
+
+ return world;
+}
+
+async function verifyComp(world: World, comp: Comp, apiKey: string, modelName: string, contractName: string): Promise {
+ if (world.isLocalNetwork()) {
+ world.printer.printLine(`Politely declining to verify on local network: ${world.network}.`);
+ } else {
+ await verify(world, apiKey, modelName, contractName, comp._address);
+ }
+
+ return world;
+}
+
+async function approve(world: World, from: string, comp: Comp, address: string, amount: NumberV): Promise {
+ let invokation = await invoke(world, comp.methods.approve(address, amount.encode()), from, NoErrorReporter);
+
+ world = addAction(
+ world,
+ `Approved Comp token for ${from} of ${amount.show()}`,
+ invokation
+ );
+
+ return world;
+}
+
+async function transfer(world: World, from: string, comp: Comp, address: string, amount: NumberV): Promise {
+ let invokation = await invoke(world, comp.methods.transfer(address, amount.encode()), from, NoErrorReporter);
+
+ world = addAction(
+ world,
+ `Transferred ${amount.show()} Comp tokens from ${from} to ${address}`,
+ invokation
+ );
+
+ return world;
+}
+
+async function transferFrom(world: World, from: string, comp: Comp, owner: string, spender: string, amount: NumberV): Promise {
+ let invokation = await invoke(world, comp.methods.transferFrom(owner, spender, amount.encode()), from, NoErrorReporter);
+
+ world = addAction(
+ world,
+ `"Transferred from" ${amount.show()} Comp tokens from ${owner} to ${spender}`,
+ invokation
+ );
+
+ return world;
+}
+
+async function transferScenario(world: World, from: string, comp: CompScenario, addresses: string[], amount: NumberV): Promise {
+ let invokation = await invoke(world, comp.methods.transferScenario(addresses, amount.encode()), from, NoErrorReporter);
+
+ world = addAction(
+ world,
+ `Transferred ${amount.show()} Comp tokens from ${from} to ${addresses}`,
+ invokation
+ );
+
+ return world;
+}
+
+async function transferFromScenario(world: World, from: string, comp: CompScenario, addresses: string[], amount: NumberV): Promise {
+ let invokation = await invoke(world, comp.methods.transferFromScenario(addresses, amount.encode()), from, NoErrorReporter);
+
+ world = addAction(
+ world,
+ `Transferred ${amount.show()} Comp tokens from ${addresses} to ${from}`,
+ invokation
+ );
+
+ return world;
+}
+
+async function delegate(world: World, from: string, comp: Comp, account: string): Promise {
+ let invokation = await invoke(world, comp.methods.delegate(account), from, NoErrorReporter);
+
+ world = addAction(
+ world,
+ `"Delegated from" ${from} to ${account}`,
+ invokation
+ );
+
+ return world;
+}
+
+async function setBlockNumber(
+ world: World,
+ from: string,
+ comp: Comp,
+ blockNumber: NumberV
+): Promise {
+ return addAction(
+ world,
+ `Set Comp blockNumber to ${blockNumber.show()}`,
+ await invoke(world, comp.methods.setBlockNumber(blockNumber.encode()), from)
+ );
+}
+
+export function compCommands() {
+ return [
+ new Command<{ params: EventV }>(`
+ #### Deploy
+
+ * "Deploy ...params" - Generates a new Comp token
+ * E.g. "Comp Deploy"
+ `,
+ "Deploy",
+ [
+ new Arg("params", getEventV, { variadic: true })
+ ],
+ (world, from, { params }) => genComp(world, from, params.val)
+ ),
+
+ new View<{ comp: Comp, apiKey: StringV, contractName: StringV }>(`
+ #### Verify
+
+ * " Verify apiKey: contractName:=Comp" - Verifies Comp token in Etherscan
+ * E.g. "Comp Verify "myApiKey"
+ `,
+ "Verify",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("apiKey", getStringV),
+ new Arg("contractName", getStringV, { default: new StringV("Comp") })
+ ],
+ async (world, { comp, apiKey, contractName }) => {
+ return await verifyComp(world, comp, apiKey.val, comp.name, contractName.val)
+ }
+ ),
+
+ new Command<{ comp: Comp, spender: AddressV, amount: NumberV }>(`
+ #### Approve
+
+ * "Comp Approve spender: " - Adds an allowance between user and address
+ * E.g. "Comp Approve Geoff 1.0e18"
+ `,
+ "Approve",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("spender", getAddressV),
+ new Arg("amount", getNumberV)
+ ],
+ (world, from, { comp, spender, amount }) => {
+ return approve(world, from, comp, spender.val, amount)
+ }
+ ),
+
+ new Command<{ comp: Comp, recipient: AddressV, amount: NumberV }>(`
+ #### Transfer
+
+ * "Comp Transfer recipient: " - Transfers a number of tokens via "transfer" as given user to recipient (this does not depend on allowance)
+ * E.g. "Comp Transfer Torrey 1.0e18"
+ `,
+ "Transfer",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("recipient", getAddressV),
+ new Arg("amount", getNumberV)
+ ],
+ (world, from, { comp, recipient, amount }) => transfer(world, from, comp, recipient.val, amount)
+ ),
+
+ new Command<{ comp: Comp, owner: AddressV, spender: AddressV, amount: NumberV }>(`
+ #### TransferFrom
+
+ * "Comp TransferFrom owner: spender: " - Transfers a number of tokens via "transfeFrom" to recipient (this depends on allowances)
+ * E.g. "Comp TransferFrom Geoff Torrey 1.0e18"
+ `,
+ "TransferFrom",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("owner", getAddressV),
+ new Arg("spender", getAddressV),
+ new Arg("amount", getNumberV)
+ ],
+ (world, from, { comp, owner, spender, amount }) => transferFrom(world, from, comp, owner.val, spender.val, amount)
+ ),
+
+ new Command<{ comp: CompScenario, recipients: AddressV[], amount: NumberV }>(`
+ #### TransferScenario
+
+ * "Comp TransferScenario recipients: " - Transfers a number of tokens via "transfer" to the given recipients (this does not depend on allowance)
+ * E.g. "Comp TransferScenario (Jared Torrey) 10"
+ `,
+ "TransferScenario",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("recipients", getAddressV, { mapped: true }),
+ new Arg("amount", getNumberV)
+ ],
+ (world, from, { comp, recipients, amount }) => transferScenario(world, from, comp, recipients.map(recipient => recipient.val), amount)
+ ),
+
+ new Command<{ comp: CompScenario, froms: AddressV[], amount: NumberV }>(`
+ #### TransferFromScenario
+
+ * "Comp TransferFromScenario froms: " - Transfers a number of tokens via "transferFrom" from the given users to msg.sender (this depends on allowance)
+ * E.g. "Comp TransferFromScenario (Jared Torrey) 10"
+ `,
+ "TransferFromScenario",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("froms", getAddressV, { mapped: true }),
+ new Arg("amount", getNumberV)
+ ],
+ (world, from, { comp, froms, amount }) => transferFromScenario(world, from, comp, froms.map(_from => _from.val), amount)
+ ),
+
+ new Command<{ comp: Comp, account: AddressV }>(`
+ #### Delegate
+
+ * "Comp Delegate account:" - Delegates votes to a given account
+ * E.g. "Comp Delegate Torrey"
+ `,
+ "Delegate",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("account", getAddressV),
+ ],
+ (world, from, { comp, account }) => delegate(world, from, comp, account.val)
+ ),
+ new Command<{ comp: Comp, blockNumber: NumberV }>(`
+ #### SetBlockNumber
+
+ * "SetBlockNumber " - Sets the blockTimestamp of the Comp Harness
+ * E.g. "Comp SetBlockNumber 500"
+ `,
+ 'SetBlockNumber',
+ [new Arg('comp', getComp, { implicit: true }), new Arg('blockNumber', getNumberV)],
+ (world, from, { comp, blockNumber }) => setBlockNumber(world, from, comp, blockNumber)
+ )
+ ];
+}
+
+export async function processCompEvent(world: World, event: Event, from: string | null): Promise {
+ return await processCommandEvent("Comp", compCommands(), world, event, from);
+}
diff --git a/scenario/src/Event/GovGuardianEvent.ts b/scenario/src/Event/GovGuardianEvent.ts
new file mode 100644
index 000000000..1dcf43bbe
--- /dev/null
+++ b/scenario/src/Event/GovGuardianEvent.ts
@@ -0,0 +1,112 @@
+import { Event } from '../Event';
+import { addAction, describeUser, World } from '../World';
+import { Governor } from '../Contract/Governor';
+import { invoke } from '../Invokation';
+import {
+ getAddressV,
+ getEventV,
+ getNumberV,
+ getStringV,
+ getCoreValue
+} from '../CoreValue';
+import {
+ AddressV,
+ EventV,
+ NumberV,
+ StringV
+} from '../Value';
+import { Arg, Command, processCommandEvent, View } from '../Command';
+
+export function guardianCommands(governor: Governor) {
+ return [
+ new Command<{ newPendingAdmin: AddressV, eta: NumberV }>(
+ `
+ #### QueueSetTimelockPendingAdmin
+
+ * "Governor QueueSetTimelockPendingAdmin newPendingAdmin: eta:" - Queues in the timelock a function to set a new pending admin
+ * E.g. "Governor GovernorScenario Guardian QueueSetTimelockPendingAdmin Geoff 604900"
+ `,
+ 'QueueSetTimelockPendingAdmin',
+ [
+ new Arg('newPendingAdmin', getAddressV),
+ new Arg('eta', getNumberV)
+ ],
+ async (world, from, { newPendingAdmin, eta }) => {
+ const invokation = await invoke(world, governor.methods.__queueSetTimelockPendingAdmin(newPendingAdmin.val, eta.encode()), from);
+
+ return addAction(
+ world,
+ `Gov Guardian has queued in the timelock a new pending admin command for ${describeUser(world, newPendingAdmin.val)}`,
+ invokation
+ )
+ }
+ ),
+
+ new Command<{ newPendingAdmin: AddressV, eta: NumberV }>(
+ `
+ #### ExecuteSetTimelockPendingAdmin
+
+ * "Governor ExecuteSetTimelockPendingAdmin newPendingAdmin: eta:" - Executes on the timelock the function to set a new pending admin
+ * E.g. "Governor GovernorScenario Guardian ExecuteSetTimelockPendingAdmin Geoff 604900"
+ `,
+ 'ExecuteSetTimelockPendingAdmin',
+ [
+ new Arg('newPendingAdmin', getAddressV),
+ new Arg('eta', getNumberV)
+ ],
+ async (world, from, { newPendingAdmin, eta }) => {
+ const invokation = await invoke(world, governor.methods.__executeSetTimelockPendingAdmin(newPendingAdmin.val, eta.encode()), from);
+
+ return addAction(
+ world,
+ `Gov Guardian has executed via the timelock a new pending admin to ${describeUser(world, newPendingAdmin.val)}`,
+ invokation
+ )
+ }
+ ),
+
+ new Command<{}>(
+ `
+ #### AcceptAdmin
+
+ * "Governor Guardian AcceptAdmin" - Calls \`acceptAdmin\` on the Timelock
+ * E.g. "Governor GovernorScenario Guardian AcceptAdmin"
+ `,
+ 'AcceptAdmin',
+ [],
+ async (world, from, { }) => {
+ const invokation = await invoke(world, governor.methods.__acceptAdmin(), from);
+
+ return addAction(
+ world,
+ `Gov Guardian has accepted admin`,
+ invokation
+ )
+ }
+ ),
+
+ new Command<{}>(
+ `
+ #### Abdicate
+
+ * "Governor Guardian Abdicate" - Abdicates gov guardian role
+ * E.g. "Governor GovernorScenario Guardian Abdicate"
+ `,
+ 'Abdicate',
+ [],
+ async (world, from, { }) => {
+ const invokation = await invoke(world, governor.methods.__abdicate(), from);
+
+ return addAction(
+ world,
+ `Gov Guardian has abdicated`,
+ invokation
+ )
+ }
+ )
+ ];
+}
+
+export async function processGuardianEvent(world: World, governor: Governor, event: Event, from: string | null): Promise {
+ return await processCommandEvent('Guardian', guardianCommands(governor), world, event, from);
+}
diff --git a/scenario/src/Event/GovernorEvent.ts b/scenario/src/Event/GovernorEvent.ts
new file mode 100644
index 000000000..679c3642e
--- /dev/null
+++ b/scenario/src/Event/GovernorEvent.ts
@@ -0,0 +1,209 @@
+import { Event } from '../Event';
+import { addAction, World } from '../World';
+import { Governor } from '../Contract/Governor';
+import { buildGovernor } from '../Builder/GovernorBuilder';
+import { invoke } from '../Invokation';
+import {
+ getAddressV,
+ getArrayV,
+ getEventV,
+ getNumberV,
+ getStringV,
+ getCoreValue,
+} from '../CoreValue';
+import {
+ AddressV,
+ ArrayV,
+ EventV,
+ NumberV,
+ StringV
+} from '../Value';
+import { Arg, Command, processCommandEvent, View } from '../Command';
+import { getGovernorData } from '../ContractLookup';
+import { verify } from '../Verify';
+import { encodedNumber } from '../Encoding';
+import { processProposalEvent } from './ProposalEvent';
+import { processGuardianEvent } from './GovGuardianEvent';
+import { encodeParameters } from '../Utils';
+import { getGovernorV } from '../Value/GovernorValue';
+
+async function genGovernor(world: World, from: string, params: Event): Promise {
+ let { world: nextWorld, governor, govData } = await buildGovernor(world, from, params);
+ world = nextWorld;
+
+ return addAction(
+ world,
+ `Deployed Governor ${govData.contract} to address ${governor._address}`,
+ govData.invokation
+ );
+}
+
+async function verifyGovernor(world: World, governor: Governor, apiKey: string, modelName: string, contractName: string): Promise {
+ if (world.isLocalNetwork()) {
+ world.printer.printLine(`Politely declining to verify on local network: ${world.network}.`);
+ } else {
+ await verify(world, apiKey, modelName, contractName, governor._address);
+ }
+
+ return world;
+}
+
+async function propose(world: World, from: string, governor: Governor, targets: string[], values: encodedNumber[], signatures: string[], calldatas: string[], description: string): Promise {
+ const invokation = await invoke(world, governor.methods.propose(targets, values, signatures, calldatas, description), from);
+ return addAction(
+ world,
+ `Created new proposal "${description}" with id=${invokation.value} in Governor`,
+ invokation
+ );
+}
+
+async function setBlockNumber(
+ world: World,
+ from: string,
+ governor: Governor,
+ blockNumber: NumberV
+): Promise {
+ return addAction(
+ world,
+ `Set Governor blockNumber to ${blockNumber.show()}`,
+ await invoke(world, governor.methods.setBlockNumber(blockNumber.encode()), from)
+ );
+}
+
+async function setBlockTimestamp(
+ world: World,
+ from: string,
+ governor: Governor,
+ blockTimestamp: NumberV
+): Promise {
+ return addAction(
+ world,
+ `Set Governor blockTimestamp to ${blockTimestamp.show()}`,
+ await invoke(world, governor.methods.setBlockTimestamp(blockTimestamp.encode()), from)
+ );
+}
+
+export function governorCommands() {
+ return [
+ new Command<{ params: EventV }>(`
+ #### Deploy
+
+ * "Deploy ...params" - Generates a new Governor
+ * E.g. "Governor Deploy Alpha"
+ `,
+ "Deploy",
+ [
+ new Arg("params", getEventV, { variadic: true })
+ ],
+ (world, from, { params }) => genGovernor(world, from, params.val)
+ ),
+
+ new View<{ governorArg: StringV, apiKey: StringV }>(`
+ #### Verify
+
+ * " Verify apiKey:" - Verifies Governor in Etherscan
+ * E.g. "Governor Verify "myApiKey"
+ `,
+ "Verify",
+ [
+ new Arg("governorArg", getStringV),
+ new Arg("apiKey", getStringV)
+ ],
+ async (world, { governorArg, apiKey }) => {
+ let [governor, name, data] = await getGovernorData(world, governorArg.val);
+
+ return await verifyGovernor(world, governor, apiKey.val, name, data.get('contract')!)
+ },
+ { namePos: 1 }
+ ),
+
+ new Command<{ governor: Governor, description: StringV, targets: ArrayV, values: ArrayV, signatures: ArrayV, callDataArgs: ArrayV> }>(`
+ #### Propose
+
+ * "Governor Propose description: targets: signatures: callDataArgs:" - Creates a new proposal in Governor
+ * E.g. "Governor GovernorScenario Propose "New Interest Rate" [(Address cDAI)] [0] [("_setInterestRateModel(address)")] [[(Address MyInterestRateModel)]]
+ `,
+ "Propose",
+ [
+ new Arg("governor", getGovernorV),
+ new Arg("description", getStringV),
+ new Arg("targets", getArrayV(getAddressV)),
+ new Arg("values", getArrayV(getNumberV)),
+ new Arg("signatures", getArrayV(getStringV)),
+ new Arg("callDataArgs", getArrayV(getArrayV(getCoreValue))),
+ ],
+ async (world, from, { governor, description, targets, values, signatures, callDataArgs }) => {
+ const targetsU = targets.val.map(a => a.val);
+ const valuesU = values.val.map(a => a.encode());
+ const signaturesU = signatures.val.map(a => a.val);
+ const callDatasU: string[] = signatures.val.reduce((acc, cur, idx) => {
+ const args = callDataArgs.val[idx].val.map(a => a.val);
+ acc.push(encodeParameters(world, cur.val, args));
+ return acc;
+ }, []);
+ return await propose(world, from, governor, targetsU, valuesU, signaturesU, callDatasU, description.val);
+ },
+ { namePos: 1 }
+ ),
+ new Command<{ governor: Governor, params: EventV }>(`
+ #### Proposal
+
+ * "Governor Proposal <...proposalEvent>" - Returns information about a proposal
+ * E.g. "Governor GovernorScenario Proposal LastProposal Vote For"
+ `,
+ "Proposal",
+ [
+ new Arg('governor', getGovernorV),
+ new Arg("params", getEventV, { variadic: true })
+ ],
+ (world, from, { governor, params }) => processProposalEvent(world, governor, params.val, from),
+ { namePos: 1 }
+ ),
+ new Command<{ governor: Governor, params: EventV }>(`
+ #### Guardian
+
+ * "Governor Guardian <...guardianEvent>" - Returns information about a guardian
+ * E.g. "Governor GovernorScenario Guardian Abdicate"
+ `,
+ "Guardian",
+ [
+ new Arg('governor', getGovernorV),
+ new Arg("params", getEventV, { variadic: true })
+ ],
+ (world, from, { governor, params }) => processGuardianEvent(world, governor, params.val, from),
+ { namePos: 1 }
+ ),
+ new Command<{ governor: Governor, blockNumber: NumberV }>(`
+ #### SetBlockNumber
+
+ * "Governor SetBlockNumber " - Sets the blockNumber of the Governance Harness
+ * E.g. "Governor SetBlockNumber 500"
+ `,
+ 'SetBlockNumber',
+ [
+ new Arg('governor', getGovernorV),
+ new Arg('blockNumber', getNumberV)
+ ],
+ (world, from, { governor, blockNumber }) => setBlockNumber(world, from, governor, blockNumber),
+ { namePos: 1 }
+ ),
+ new Command<{ governor: Governor, blockTimestamp: NumberV }>(`
+ #### SetBlockTimestamp
+
+ * "Governor SetBlockNumber " - Sets the blockTimestamp of the Governance Harness
+ * E.g. "Governor GovernorScenario SetBlockTimestamp 500"
+ `,
+ 'SetBlockTimestamp',
+ [
+ new Arg('governor', getGovernorV),
+ new Arg('blockTimestamp', getNumberV)
+ ],
+ (world, from, { governor, blockTimestamp }) => setBlockTimestamp(world, from, governor, blockTimestamp),
+ { namePos: 1 }
+ )
+ ];
+}
+
+export async function processGovernorEvent(world: World, event: Event, from: string | null): Promise {
+ return await processCommandEvent("Governor", governorCommands(), world, event, from);
+}
diff --git a/scenario/src/Event/ProposalEvent.ts b/scenario/src/Event/ProposalEvent.ts
new file mode 100644
index 000000000..63daaa418
--- /dev/null
+++ b/scenario/src/Event/ProposalEvent.ts
@@ -0,0 +1,127 @@
+import { Event } from '../Event';
+import { addAction, describeUser, World } from '../World';
+import { Governor } from '../Contract/Governor';
+import { invoke } from '../Invokation';
+import {
+ getEventV,
+} from '../CoreValue';
+import {
+ EventV,
+} from '../Value';
+import { Arg, Command, processCommandEvent } from '../Command';
+import { getProposalId } from '../Value/ProposalValue';
+
+function getSupport(support: Event): boolean {
+ if (typeof support === 'string') {
+ if (support === 'For' || support === 'Against') {
+ return support === 'For';
+ }
+ }
+
+ throw new Error(`Unknown support flag \`${support}\`, expected "For" or "Against"`);
+}
+
+async function describeProposal(world: World, governor: Governor, proposalId: number): Promise {
+ // const proposal = await governor.methods.proposals(proposalId).call();
+ return `proposal ${proposalId.toString()}`; // TODO: Cleanup
+}
+
+export function proposalCommands(governor: Governor) {
+ return [
+ new Command<{ proposalIdent: EventV, support: EventV }>(
+ `
+ #### Vote
+
+ * "Governor Vote " - Votes for or against a given proposal
+ * E.g. "Governor GovernorScenario Proposal LastProposal Vote For"
+ `,
+ 'Vote',
+ [
+ new Arg("proposalIdent", getEventV),
+ new Arg("support", getEventV),
+ ],
+ async (world, from, { proposalIdent, support }) => {
+ const proposalId = await getProposalId(world, governor, proposalIdent.val);
+ const invokation = await invoke(world, governor.methods.castVote(proposalId, getSupport(support.val)), from);
+
+ return addAction(
+ world,
+ `Cast ${support.val.toString()} vote from ${describeUser(world, from)} for proposal ${proposalId}`,
+ invokation
+ )
+ },
+ { namePos: 1 }
+ ),
+
+ new Command<{ proposalIdent: EventV }>(
+ `
+ #### Queue
+ * "Governor Queue" - Queues given proposal
+ * E.g. "Governor GovernorScenario Proposal LastProposal Queue"
+ `,
+ 'Queue',
+ [
+ new Arg("proposalIdent", getEventV)
+ ],
+ async (world, from, { proposalIdent }) => {
+ const proposalId = await getProposalId(world, governor, proposalIdent.val);
+ const invokation = await invoke(world, governor.methods.queue(proposalId), from);
+
+ return addAction(
+ world,
+ `Queue proposal ${await describeProposal(world, governor, proposalId)} from ${describeUser(world, from)}`,
+ invokation
+ )
+ },
+ { namePos: 1 }
+ ),
+ new Command<{ proposalIdent: EventV }>(
+ `
+ #### Execute
+ * "Governor Execute" - Executes given proposal
+ * E.g. "Governor GovernorScenario Proposal LastProposal Execute"
+ `,
+ 'Execute',
+ [
+ new Arg("proposalIdent", getEventV)
+ ],
+ async (world, from, { proposalIdent }) => {
+ const proposalId = await getProposalId(world, governor, proposalIdent.val);
+ const invokation = await invoke(world, governor.methods.execute(proposalId), from);
+
+ return addAction(
+ world,
+ `Execute proposal ${await describeProposal(world, governor, proposalId)} from ${describeUser(world, from)}`,
+ invokation
+ )
+ },
+ { namePos: 1 }
+ ),
+ new Command<{ proposalIdent: EventV }>(
+ `
+ #### Cancel
+ * "Cancel" - cancels given proposal
+ * E.g. "Governor Proposal LastProposal Cancel"
+ `,
+ 'Cancel',
+ [
+ new Arg("proposalIdent", getEventV)
+ ],
+ async (world, from, { proposalIdent }) => {
+ const proposalId = await getProposalId(world, governor, proposalIdent.val);
+ const invokation = await invoke(world, governor.methods.cancel(proposalId), from);
+
+ return addAction(
+ world,
+ `Cancel proposal ${await describeProposal(world, governor, proposalId)} from ${describeUser(world, from)}`,
+ invokation
+ )
+ },
+ { namePos: 1 }
+ ),
+ ];
+}
+
+export async function processProposalEvent(world: World, governor: Governor, event: Event, from: string | null): Promise {
+ return await processCommandEvent('Proposal', proposalCommands(governor), world, event, from);
+}
diff --git a/scenario/src/Event/TimelockEvent.ts b/scenario/src/Event/TimelockEvent.ts
index 1ca5b02f7..86598bcb1 100644
--- a/scenario/src/Event/TimelockEvent.ts
+++ b/scenario/src/Event/TimelockEvent.ts
@@ -40,6 +40,19 @@ async function setPendingAdmin(
);
}
+async function setAdmin(
+ world: World,
+ from: string,
+ timeLock: Timelock,
+ admin: string
+): Promise {
+ return addAction(
+ world,
+ `Set Timelock admin to ${admin}`,
+ await invoke(world, timeLock.methods.harnessSetAdmin(admin), from)
+ );
+}
+
async function setDelay(world: World, from: string, timeLock: Timelock, delay: NumberV): Promise {
return addAction(
world,
@@ -232,6 +245,17 @@ export function timelockCommands() {
[new Arg('timelock', getTimelock, { implicit: true }), new Arg('admin', getAddressV)],
(world, from, { timelock, admin }) => setPendingAdmin(world, from, timelock, admin.val)
),
+ new Command<{ timelock: Timelock; admin: AddressV }>(
+ `
+ #### SetAdmin
+
+ * "SetAdmin " - Sets the admin for the Timelock through the harness
+ * E.g. "Timelock SetAdmin \"0x0000000000000000000000000000000000000000\""
+ `,
+ 'SetAdmin',
+ [new Arg('timelock', getTimelock, { implicit: true }), new Arg('admin', getAddressV)],
+ (world, from, { timelock, admin }) => setAdmin(world, from, timelock, admin.val)
+ ),
new Command<{
timelock: Timelock;
target: AddressV;
diff --git a/scenario/src/Event/TrxEvent.ts b/scenario/src/Event/TrxEvent.ts
index b559129b9..ae8285298 100644
--- a/scenario/src/Event/TrxEvent.ts
+++ b/scenario/src/Event/TrxEvent.ts
@@ -13,11 +13,11 @@ import {Arg, Command, processCommandEvent} from '../Command';
import {encodedNumber} from '../Encoding';
async function setTrxValue(world: World, value: encodedNumber): Promise {
- return world.update('trxInvokationOpts', (t) => t.set('value', value));
+ return world.update('trxInvokationOpts', (t) => t.set('value', value.toString()));
}
async function setTrxGasPrice(world: World, gasPrice: encodedNumber): Promise {
- return world.update('trxInvokationOpts', (t) => t.set('gasPrice', gasPrice.toString()));
+ return world.update('trxInvokationOpts', (t) => t.set('gasPrice', gasPrice.toString()));;
}
export function trxCommands() {
diff --git a/scenario/src/EventBuilder.ts b/scenario/src/EventBuilder.ts
new file mode 100644
index 000000000..d38bab12b
--- /dev/null
+++ b/scenario/src/EventBuilder.ts
@@ -0,0 +1,231 @@
+import { Event } from './Event';
+import { addAction, World } from './World';
+import { Governor } from './Contract/Governor';
+import { Invokation } from './Invokation';
+import { Arg, Command, Fetcher, getFetcherValue, processCommandEvent, View } from './Command';
+import { storeAndSaveContract } from './Networks';
+import { Contract, getContract } from './Contract';
+import { getWorldContract } from './ContractLookup';
+import { mustString } from './Utils';
+import { Callable, Sendable } from './Invokation';
+import {
+ AddressV,
+ ArrayV,
+ EventV,
+ NumberV,
+ StringV,
+ Value
+} from './Value';
+import {
+ getAddressV,
+ getArrayV,
+ getEventV,
+ getNumberV,
+ getStringV,
+} from './CoreValue';
+import { AbiItem, AbiInput } from 'web3-utils';
+
+export interface ContractData {
+ invokation: Invokation;
+ name: string;
+ contract: string;
+ address?: string;
+}
+
+async function getContractObject(world: World, event: Event): Promise {
+ return getWorldContract(world, [['Contracts', mustString(event)]]);
+}
+
+export function buildContractEvent(contractName: string) {
+ let contractDeployer = getContract(contractName);
+
+ async function build(
+ world: World,
+ from: string,
+ params: Event
+ ): Promise<{ world: World; contract: T; data: ContractData }> {
+ const fetchers = [
+ new Fetcher<{ name: StringV }, ContractData>(
+ `
+ #### ${contractName}
+
+ * "${contractName} name:=${contractName}" - Build ${contractName}
+ * E.g. "${contractName} Deploy"
+ }
+ `,
+ contractName,
+ [
+ new Arg('name', getStringV, { default: new StringV(contractName) })
+ ],
+ async (world, { name }) => {
+ return {
+ invokation: await contractDeployer.deploy(world, from, []),
+ name: name.val,
+ contract: contractName
+ };
+ },
+ { catchall: true }
+ )
+ ];
+
+ let data = await getFetcherValue>(`Deploy${contractName}`, fetchers, world, params);
+ let invokation = data.invokation;
+ delete data.invokation;
+
+ if (invokation.error) {
+ throw invokation.error;
+ }
+
+ const contract = invokation.value!;
+ contract.address = contract._address;
+
+ world = await storeAndSaveContract(
+ world,
+ contract,
+ data.name,
+ invokation,
+ [
+ { index: [contractName, data.name], data: data }
+ ]
+ );
+
+ return { world, contract, data };
+ }
+
+ async function deploy(world: World, from: string, params: Event) {
+ let { world: nextWorld, contract, data } = await build(world, from, params);
+ world = nextWorld;
+
+ world = addAction(
+ world,
+ `Deployed ${contractName} ${data.contract} to address ${contract._address}`,
+ data.invokation
+ );
+
+ return world;
+ }
+
+ function commands() {
+ return [
+ new Command<{ params: EventV }>(`
+ #### ${contractName}
+
+ * "${contractName} Deploy" - Deploy ${contractName}
+ * E.g. "Counter Deploy"
+ `,
+ "Deploy",
+ [
+ new Arg("params", getEventV, { variadic: true })
+ ],
+ (world, from, { params }) => deploy(world, from, params.val)
+ )
+ ];
+ }
+
+ async function processEvent(world: World, event: Event, from: string | null): Promise {
+ return await processCommandEvent(contractName, commands(), world, event, from);
+ }
+
+ let command = new Command<{ event: EventV }>(
+ `
+ #### ${contractName}
+
+ * "${contractName} ...event" - Runs given ${contractName} event
+ * E.g. "${contractName} Deploy"
+ `,
+ contractName,
+ [new Arg('event', getEventV, { variadic: true })],
+ (world, from, { event }) => {
+ return processEvent(world, event.val, from);
+ },
+ { subExpressions: commands() }
+ );
+
+ return command;
+}
+
+export async function buildContractFetcher(world: World, contractName: string) {
+
+ let abis: AbiItem[] = await world.saddle.abi(contractName);
+
+ function fetchers() {
+ const typeMappings = {
+ address: {
+ builder: (x) => new AddressV(x),
+ getter: getAddressV
+ },
+ string: {
+ builder: (x) => new StringV(x),
+ getter: getStringV
+ },
+ uint256: {
+ builder: (x) => new NumberV(x),
+ getter: getNumberV
+ }
+ };
+
+ function buildArg(name: string, input: AbiInput): Arg {
+ let { getter } = typeMappings[input.type] || {};
+
+ if (!getter) {
+ throw new Error(`Unknown ABI Input Type: ${input.type} of \`${name}\` in ${contractName}`);
+ }
+
+ return new Arg(name, getter);
+ }
+
+ async function buildOutput(world: World, fn: string, inputs: object, output: AbiItem): Promise {
+ const callable = >(inputs['contract'].methods[fn](...Object.values(inputs).slice(1)));
+ let value = await callable.call();
+ let { builder } = typeMappings[output.type] || {};
+
+ if (!builder) {
+ throw new Error(`Unknown ABI Output Type: ${output.type} of \`${fn}\` in ${contractName}`);
+ }
+
+ return builder(value);
+ }
+
+ return abis.map((abi: any) => {
+ function getEventName(s) {
+ return s.charAt(0).toUpperCase() + s.slice(1);
+ }
+
+ let eventName = getEventName(abi.name);
+ let inputNames = abi.inputs.map((input) => getEventName(input.name));
+ let args = [
+ new Arg("contract", getContractObject)
+ ].concat(abi.inputs.map((input) => buildArg(abi.name, input)));
+
+ return new Fetcher(`
+ #### ${eventName}
+
+ * "${eventName} ${inputNames.join(" ")}" - Returns the result of \`${abi.name}\` function
+ `,
+ eventName,
+ args,
+ (world, inputs) => buildOutput(world, abi.name, inputs, abi.outputs[0]),
+ { namePos: 1 }
+ )
+ });
+ }
+
+ async function getValue(world: World, event: Event): Promise {
+ return await getFetcherValue(contractName, fetchers(), world, event);
+ }
+
+
+ let fetcher = new Fetcher<{ res: Value }, Value>(
+ `
+ #### ${contractName}
+
+ * "${contractName} ...args" - Returns ${contractName} value
+ `,
+ contractName,
+ [new Arg('res', getValue, { variadic: true })],
+ async (world, { res }) => res,
+ { subExpressions: fetchers() }
+ )
+
+ return fetcher;
+}
diff --git a/scenario/src/Hypothetical.ts b/scenario/src/Hypothetical.ts
index cba2283f5..497ea3def 100644
--- a/scenario/src/Hypothetical.ts
+++ b/scenario/src/Hypothetical.ts
@@ -1,4 +1,4 @@
-import { Accounts, loadAccounts } from './Accounts';
+import {Accounts, loadAccounts} from './Accounts';
import {
addAction,
checkExpectations,
@@ -9,7 +9,7 @@ import {
setEvent,
World
} from './World';
-import Ganache from 'ganache-core';
+import {Ganache} from 'eth-saddle/dist/config';
import Web3 from 'web3';
export async function forkWeb3(web3: Web3, url: string, accounts: string[]): Promise {
diff --git a/scenario/src/Invokation.ts b/scenario/src/Invokation.ts
index 25e2c412e..940652507 100644
--- a/scenario/src/Invokation.ts
+++ b/scenario/src/Invokation.ts
@@ -221,7 +221,7 @@ export async function invoke(world: World, fn: Sendable, from: string, err
...worldInvokationOpts,
...trxInvokationOpts
};
-
+
try {
try {
const gas = await fn.estimateGas({ ...invokationOpts });
diff --git a/scenario/src/Networks.ts b/scenario/src/Networks.ts
index ecfcfd6fe..e8f0de698 100644
--- a/scenario/src/Networks.ts
+++ b/scenario/src/Networks.ts
@@ -3,7 +3,7 @@ import { World } from './World';
import { Invokation } from './Invokation';
import { Contract, setContractName } from './Contract';
import { getNetworkPath, readFile, writeFile } from './File';
-import { ABIItem } from 'web3-utils';
+import { AbiItem } from 'web3-utils';
type Networks = Map;
@@ -159,7 +159,7 @@ export async function loadContractData(
let contracts = networks.get('Contracts') || Map({});
world = contracts.reduce((world: World, address: string, name: string) => {
- let abi: ABIItem[] = networksABI.has(name) ? networksABI.get(name).toJS() : [];
+ let abi: AbiItem[] = networksABI.has(name) ? networksABI.get(name).toJS() : [];
let contract = new world.web3.eth.Contract(abi, address, {});
world = updateEventDecoder(world, contract);
diff --git a/scenario/src/Repl.ts b/scenario/src/Repl.ts
index 20ef2c18f..ce8b861e3 100644
--- a/scenario/src/Repl.ts
+++ b/scenario/src/Repl.ts
@@ -127,10 +127,6 @@ async function repl(): Promise {
saddle.web3 = await forkWeb3(saddle.web3, forkJson.url, forkJson.unlocked);
saddle.accounts = forkJson.unlocked;
console.log(`Running on fork ${forkJson.url} with unlocked accounts ${forkJson.unlocked.join(', ')}`)
- } else {
- // Uck, we have to load accounts first..let's just see if we have any unlocked accounts
- // XXX does this break something with wallet addresses?
- saddle.accounts = await (new Web3(saddle.web3.currentProvider)).eth.personal.getAccounts();
}
if (saddle.accounts.length > 0) {
diff --git a/scenario/src/Utils.ts b/scenario/src/Utils.ts
index 5a32f16e0..b57be88c1 100644
--- a/scenario/src/Utils.ts
+++ b/scenario/src/Utils.ts
@@ -1,6 +1,6 @@
import { Event } from './Event';
import { World } from './World';
-import { ABIItem } from 'web3-utils';
+import { AbiItem } from 'web3-utils';
// Wraps the element in an array, if it was not already an array
// If array is null or undefined, return the empty array
@@ -52,7 +52,7 @@ export function encodeABI(world: World, fnABI: string, fnParams: string[]): stri
inputs: fnInputs.split(',').map(i => ({ name: '', type: i }))
};
// XXXS
- return world.web3.eth.abi.encodeFunctionCall(jsonInterface, fnParams);
+ return world.web3.eth.abi.encodeFunctionCall(jsonInterface, fnParams);
}
export function encodeParameters(world: World, fnABI: string, fnParams: string[]): string {
@@ -88,7 +88,7 @@ export function sleep(timeout: number): Promise {
export function sendRPC(world: World, method: string, params: any[]) {
return new Promise((resolve, reject) => {
- if (!world.web3.currentProvider || typeof(world.web3.currentProvider) === 'string') {
+ if (!world.web3.currentProvider || typeof (world.web3.currentProvider) === 'string') {
return reject(`cannot send from currentProvider=${world.web3.currentProvider}`);
}
diff --git a/scenario/src/Value.ts b/scenario/src/Value.ts
index b967d2251..9dde304d5 100644
--- a/scenario/src/Value.ts
+++ b/scenario/src/Value.ts
@@ -119,6 +119,8 @@ export class BoolV implements Value {
return this.val === given.val;
} else if (given instanceof NumberV) {
return this.compareTo(world, given.toBoolV());
+ } else if (given instanceof StringV && ( given.val === 'true' || given.val === 'false' )) {
+ return this.val || given.val !== 'true';
} else {
throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`);
}
@@ -250,6 +252,8 @@ export class NumberV implements Value {
return thisBig === givenBig;
} else if (given instanceof PreciseV) {
return this.compareTo(world, given.toNumberV());
+ } else if (given instanceof StringV) {
+ return this.compareTo(world, new NumberV(Number(given.val)));
} else {
throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`);
}
@@ -371,7 +375,7 @@ export class ListV implements Value {
}
compareTo(world: World, given: Value): boolean {
- if (given instanceof ListV) {
+ if (given instanceof ListV || given instanceof ArrayV) {
return this.val.every((el, i) => el.compareTo(world, given.val[i]));
} else {
throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`);
@@ -390,3 +394,31 @@ export class ListV implements Value {
return this.val.length > 0;
}
}
+
+export class ArrayV implements Value {
+ val: T[]
+
+ constructor(els) {
+ this.val = els;
+ }
+
+ compareTo(world: World, given: Value): boolean {
+ if (given instanceof ListV || given instanceof ArrayV) {
+ return this.val.every((el, i) => el.compareTo(world, given.val[i]));
+ } else {
+ throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`);
+ }
+ }
+
+ compareOrder(world: World, given: Value): Order {
+ throw new Error(`Cannot compare order of ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`);
+ }
+
+ toString() {
+ return `ArrayV el.toString()).join(',')}>`;
+ }
+
+ truthy() {
+ return this.val.length > 0;
+ }
+}
diff --git a/scenario/src/Value/CompValue.ts b/scenario/src/Value/CompValue.ts
new file mode 100644
index 000000000..d95672434
--- /dev/null
+++ b/scenario/src/Value/CompValue.ts
@@ -0,0 +1,202 @@
+import { Event } from '../Event';
+import { World } from '../World';
+import { Comp } from '../Contract/Comp';
+import {
+ getAddressV,
+ getNumberV
+} from '../CoreValue';
+import {
+ AddressV,
+ ListV,
+ NumberV,
+ StringV,
+ Value
+} from '../Value';
+import { Arg, Fetcher, getFetcherValue } from '../Command';
+import { getComp } from '../ContractLookup';
+
+export function compFetchers() {
+ return [
+ new Fetcher<{ comp: Comp }, AddressV>(`
+ #### Address
+
+ * " Address" - Returns the address of Comp token
+ * E.g. "Comp Address"
+ `,
+ "Address",
+ [
+ new Arg("comp", getComp, { implicit: true })
+ ],
+ async (world, { comp }) => new AddressV(comp._address)
+ ),
+
+ new Fetcher<{ comp: Comp }, StringV>(`
+ #### Name
+
+ * " Name" - Returns the name of the Comp token
+ * E.g. "Comp Name"
+ `,
+ "Name",
+ [
+ new Arg("comp", getComp, { implicit: true })
+ ],
+ async (world, { comp }) => new StringV(await comp.methods.name().call())
+ ),
+
+ new Fetcher<{ comp: Comp }, StringV>(`
+ #### Symbol
+
+ * " Symbol" - Returns the symbol of the Comp token
+ * E.g. "Comp Symbol"
+ `,
+ "Symbol",
+ [
+ new Arg("comp", getComp, { implicit: true })
+ ],
+ async (world, { comp }) => new StringV(await comp.methods.symbol().call())
+ ),
+
+ new Fetcher<{ comp: Comp }, NumberV>(`
+ #### Decimals
+
+ * " Decimals" - Returns the number of decimals of the Comp token
+ * E.g. "Comp Decimals"
+ `,
+ "Decimals",
+ [
+ new Arg("comp", getComp, { implicit: true })
+ ],
+ async (world, { comp }) => new NumberV(await comp.methods.decimals().call())
+ ),
+
+ new Fetcher<{ comp: Comp }, NumberV>(`
+ #### TotalSupply
+
+ * "Comp TotalSupply" - Returns Comp token's total supply
+ `,
+ "TotalSupply",
+ [
+ new Arg("comp", getComp, { implicit: true })
+ ],
+ async (world, { comp }) => new NumberV(await comp.methods.totalSupply().call())
+ ),
+
+ new Fetcher<{ comp: Comp, address: AddressV }, NumberV>(`
+ #### TokenBalance
+
+ * "Comp TokenBalance " - Returns the Comp token balance of a given address
+ * E.g. "Comp TokenBalance Geoff" - Returns Geoff's Comp balance
+ `,
+ "TokenBalance",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("address", getAddressV)
+ ],
+ async (world, { comp, address }) => new NumberV(await comp.methods.balanceOf(address.val).call())
+ ),
+
+ new Fetcher<{ comp: Comp, owner: AddressV, spender: AddressV }, NumberV>(`
+ #### Allowance
+
+ * "Comp Allowance owner: spender:" - Returns the Comp allowance from owner to spender
+ * E.g. "Comp Allowance Geoff Torrey" - Returns the Comp allowance of Geoff to Torrey
+ `,
+ "Allowance",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("owner", getAddressV),
+ new Arg("spender", getAddressV)
+ ],
+ async (world, { comp, owner, spender }) => new NumberV(await comp.methods.allowance(owner.val, spender.val).call())
+ ),
+
+ new Fetcher<{ comp: Comp, account: AddressV }, NumberV>(`
+ #### GetCurrentVotes
+
+ * "Comp GetCurrentVotes account:" - Returns the current Comp votes balance for an account
+ * E.g. "Comp GetCurrentVotes Geoff" - Returns the current Comp vote balance of Geoff
+ `,
+ "GetCurrentVotes",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("account", getAddressV),
+ ],
+ async (world, { comp, account }) => new NumberV(await comp.methods.getCurrentVotes(account.val).call())
+ ),
+
+ new Fetcher<{ comp: Comp, account: AddressV, blockNumber: NumberV }, NumberV>(`
+ #### GetPriorVotes
+
+ * "Comp GetPriorVotes account: blockBumber:" - Returns the current Comp votes balance at given block
+ * E.g. "Comp GetPriorVotes Geoff 5" - Returns the Comp vote balance for Geoff at block 5
+ `,
+ "GetPriorVotes",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("account", getAddressV),
+ new Arg("blockNumber", getNumberV),
+ ],
+ async (world, { comp, account, blockNumber }) => new NumberV(await comp.methods.getPriorVotes(account.val, blockNumber.encode()).call())
+ ),
+
+ new Fetcher<{ comp: Comp, account: AddressV }, NumberV>(`
+ #### GetCurrentVotesBlock
+
+ * "Comp GetCurrentVotesBlock account:" - Returns the current Comp votes checkpoint block for an account
+ * E.g. "Comp GetCurrentVotesBlock Geoff" - Returns the current Comp votes checkpoint block for Geoff
+ `,
+ "GetCurrentVotesBlock",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("account", getAddressV),
+ ],
+ async (world, { comp, account }) => {
+ const numCheckpoints = Number(await comp.methods.numCheckpoints(account.val).call());
+ const checkpoint = await comp.methods.checkpoints(account.val, numCheckpoints - 1).call();
+
+ return new NumberV(checkpoint.fromBlock);
+ }
+ ),
+
+ new Fetcher<{ comp: Comp, account: AddressV }, NumberV>(`
+ #### VotesLength
+
+ * "Comp VotesLength account:" - Returns the Comp vote checkpoint array length
+ * E.g. "Comp VotesLength Geoff" - Returns the Comp vote checkpoint array length of Geoff
+ `,
+ "VotesLength",
+ [
+ new Arg("comp", getComp, { implicit: true }),
+ new Arg("account", getAddressV),
+ ],
+ async (world, { comp, account }) => new NumberV(await comp.methods.numCheckpoints(account.val).call())
+ ),
+
+ new Fetcher<{ comp: Comp, account: AddressV }, ListV>(`
+ #### AllVotes
+
+ * "Comp AllVotes account: