AccessControlledOffchainAggregator Deployment
From Chainlink Community Wiki
The purpose of this page is to provide highly detailed instructions on how to deploy the AccessControlledOffchainAggregator.sol
contract
Deploying the AccessControlledOffchainAggregator Via Remix
Import the Contract into Remix
Navigate to remix.ethereum.org
Once there, create a new doc by clicking on the little page icon
You can try to import the contract from github, but I've had mixed results from that.
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
Due to the mixed experience I've had, this guide will assume that you have simply copy and pasted the flattened contract from the below link.
It should look like the below image:
With the contract imported into remix, We'll need to compile it
Compile the Contract
Once Pasted into Remix, navigate to the Compile page.
In the image above, you can see that the COMPILER version is 0.7.6+...
When deploying the AccessControlledOffchainAggregator.sol
contract, we want to be sure that the version selected here is 0.7.6+commit.7338295f
With the correct version selected, go ahead and compile the contract by clicking the blue button with the circular arrows
Once that succeeds, we can then deploy the contract.
Note: You'll likely see some Orange warning boxes when compiling. For the sake of this doc, we'll ignore those.
Deploy the Contract
With the contract compiled, we then need to navigate to the Deploy & run transactions tab
Once on the Deploy & run transactions tab, we want to be sure that we have the correct contract selected in the drop down menu
With the correct contract deployed, we'll want to open the drop down menu to the right of the Orange Deploy button.
With the drop down expanded, we will want to populate the empty fields with the desired values.
The values in the above example are not recommended to deploy with. They're just place holder values. Additional context around each of the above values is below:
(the OCR Aggregators' billing values are in bold)
_MAXIMUMGASPRICE
: This value is used by the contract when calculating the amount of LINK to reimburse for the transmission fee reimbursement -- it's a billing value. In this example, the contract will only reimburse up to 2000GWEI_REASONABLEGASPRICE
: This is another billing value. Any transmission that gets on-chain with a gas price below this value is compensated >100%. For example, if a transmission is broadcast at 20 gwei, the Chainlink Node that got the transmission on-chain will be reimbursed for 60 gwei._MICROLINKPERETH
: This is also a billing value; It sets the price ratio of LINK to ETH used to reimburse for transmission costs._LINKGWEIPEROBSERVATION
: This is the fourth billing value; It sets the amount of LINK (in gwei) to pay to all Chainlink Nodes that participate in reaching an agreed upon value of the asset._LINKGWEIPERTRANSMISSION
: This is the final billing value. It sets the transmission "bonus" that he transmitter receives for getting the collection of observations written on-chain._LINK
: This is the LINK token contract address for the chain that the feed runs on. Full list of supported LINK contract addresses available here._MINANSWER
: This is the minimum value that the contract will accept. This value is dependent upon the_decimals
variable. If you have it set to1000000
with8
decimals, the lowest value it will accept is0.01
_MAXANSWER
: This is the maximum value that the contract will accept. This value is dependent upon the_decimals
variable. If you have it set to100000000000
with8
decimals, the largest value it will accept is1000.00
_BILLINGACCESSCONTROLLER
: This is the address of the SimpleWriteAccessController that is configured to control which address(es) are allowed to write changes to the OCR Aggregators' billing values provided above._REQUESTERACCESSCONTROLLER
: This is teh address of the SimpleWriteAccessController that is configured to control with address(es) are allowed to transmit observations to the OCR Aggregator. You should whitelist all Chainlink Nodes' AccountAddresses that you want on the feed._DECIMALS
: This is the number of decimal places used for the on-chain price. Reference the_MINANSWER
and_MAXANSER
above for examples.DESCRIPTION
: This is the friendly name of the Aggregator contract. An example would beLINK / USD
for the the LINK / USD price feed.
Additional information regarding these values is available at the AccessControlledOffchainAggregator Reads page.
The LINK token contract addresses are available at the official Chainlink docs page as well as here in the wiki's LINK Token Contract Address Index.
Your _BILLINGACCESSCONTROLLER
and _REQUESTERACCESSCONTROLLER
addresses are the two SimpleWriteAccessController.sol
contracts you had previously deployed.
Note:
Once you have populated all of those fields, go ahead and click Deploy!