Chainlink Staking v0.2 - Direct Staking Guide This document describes how to interact with the Chainlink v0.2 staking protocol on Ethereum mainnet directly against the contract or through etherscan. Official addresses: LINK token address - https://etherscan.io/token/0x514910771AF9Ca656af840dff83E8264EcF986CA Staking v0.1 protocol address - https://etherscan.io/address/0x3feB1e09b4bb0E7f0387CeE092a52e85797ab889 Staking v0.2 community staking pool address - https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e Staking v0.2 node operator staking pool address - https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5 Staking v0.2 reward vault address - https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813 Staking v0.2 price feed alerts controller address - https://etherscan.io/address/0x27484ba119d12649be2a9854e4d3b44cc3fdbad7 ==================== COMMUNITY STAKER ==================== Verify staking conditions. You can do this by going to the read contract tab in etherscan: https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract Check to see if the pool is opened by calling "27. isActive" - if the value is "True" then the pool is open. If it's "False" then you are unable to stake. ---- HOW TO STAKE - Migrate / Withdraw stake from v0.1 ---- If the Community Staking Pool is open and active, you can migrate / withdraw your stake from Staking v0.1 contract (https://etherscan.io/address/0x3feB1e09b4bb0E7f0387CeE092a52e85797ab889#writeContract) and calling "9. migrate". You will need to fill in the data(bytes) field: - To migrate your entire stake to staking v0.2, pass in "0x" or leave the field empty. - To migrate a portion of your stake and withdraw the rest (or fully withdraw), pass in encoded data of ({LINK in JUELS to Migrate},{LINK in JUELS to WITHDRAW}). For example if you plan to migrate 100 LINK and withdraw 50 LINK. You encode "100000000000000000000,50000000000000000000" as a "uint256,uint256" type to get the data value "0x0000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000002b5e3af16b1880000". Online tools such as https://adibas03.github.io/online-ethereum-abi-encoder-decoder/#/encode can help you encode these values. Remember to add "0x" to the front of the result. You can verify your stake by going to https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract and reading "18. getStakerPrincipal" NOTE: If you reached your max stake limit in v0.2 or the v0.2 staking pool is already full, your migration call will revert. ---- HOW TO STAKE - Early Access ---- NOTE: Double check the staking pool contract address you are sending your LINK to so you don't accidentally transfer your LINK to the wrong location. If you are eligible to stake during the Early Access period, your address will have a record in https://github.com/smartcontractkit/chainlink-staking-v0.2-public-guide/blob/main/proofs.tsv. Find your proof which is the long hex string that comes after the tab after your address. Note: the above url will become accessible prior to Early Access. Go to the LINK contract (https://etherscan.io/token/0x514910771AF9Ca656af840dff83E8264EcF986CA#writeContract) and call "3. transferAndCall". Pass the community staking contract value as the `_to (address)` input (0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e), the LINK in juels (LINK x 10^18) in the `_value (uint256)` field, and your proof in the `_data(bytes)` field. For example, to stake with the address `0xb8cc1df2f93d114986cee6558e8e681824e31343`, use the proof found in `proofs.tsv`: `0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000013978eee63d5743ddf4876a981167d92fb6bc80feb2d2ddb9ff3e083c3e6f1f860cde34169113cba87b76059d29edc3ec3e95c781998324b30bf014720049346337410c63eccf761ec57836c2332fcfe7cd84695b5852780d02a524382a83f11bacf514a8e29474ab2126e4914732b9670920ae161fc728eb5492f9cf0001f6f79d8aabd7748ba517b38b7274d4d32087661157d54c8f3e45a1bca366a4bf25a75b4f09f9fb602ae643ecc6f29a37042bdc204bc00de6d009e79b777bbd551c216af90ebf0ee083eaa748599d60a4071c5b3fd4d6b09a80bd01407b79086446ebca8ea7d8dfbb6df5ed2d85851fe6b4bbacb69c08d07fcf005e4a4ef74bf83b1e748c2434b1fbe764d8eca70d6c6ace33f510f2346fd8f10b2f122627e986f83faf79d5cf9e57113ba0125b9397dc1ecdb7e2c10ddaa9f0f1699a25d7f355688eadbbf1ee8093429d366a051ec1a26ed623622c0f66746827f4a2bd1423fe56841554bdb47586b0161af92821126d558bfef0a119c276edbde3f4d273824722c95049bf0eb96280e4cda0b0527efd1bebbe828c1cf5d68465fab239919305e9c0c23d239bd46144a070f1e2c402c2ab56176e1ee3d877c2b70d4b72ba8e9f631e20f1cc2a0277a7880508bdac1f594d1f155ef21c8329fbcae5f3b7a0487036d9ca75ab94ea8a05950b525723193ae09b6ad712bf56280224a37d11832e91bb568784156fdaebc12b2fe65ef2223a6a75676d101e35cade02780f62b04c7fd9c21262d77ea236f76b6af895330960d88d34d3e243b01797ddb26a93104ab10ea91b88f097c48d620932df634560def55529fa7f5f5a126a6398c8c652ad10a9287` You can verify your stake by going to https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract and reading "18. getStakerPrincipal" ---- HOW TO STAKE - General Access ---- NOTE: Double check the staking pool contract address you are sending your LINK to so you don't accidentally transfer your LINK to the wrong location. Go to the LINK contract (https://etherscan.io/token/0x514910771AF9Ca656af840dff83E8264EcF986CA#writeContract) and call "3. transferAndCall". Pass the community staking contract value as the `_to (address)` input (0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e), the LINK in juels (LINK x 10^18) in the `_value (uint256)` field, and `0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000` in the `_data(bytes)` field. You can verify your stake by going to https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract and reading "18. getStakerPrincipal" ---- HOW TO WITHDRAW ---- - Begin the unbonding period by calling "23. unbond" at https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#writeContract - After the unbonding period (initially set at 28 days), you have the claim window (initially set at 7 days) to call "24. unstake", passing in the amount of LINK you want to unstake in JUELS ==================== NODE OPERATOR STAKER ==================== Verify staking conditions. You can do this by going to the read contract tab in etherscan: https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#readContract Check to see if the pool is opened by calling "34. isActive" - if the value is "True" then the pool is open. If it's "False" then you are unable to stake. ---- HOW TO STAKE - Migrate / Withdraw stake from v0.1 ---- If the Node Operator Staking Pool is open and active, you can migrate / withdraw your stake from Staking v0.1 contract (https://etherscan.io/address/0x3feB1e09b4bb0E7f0387CeE092a52e85797ab889#writeContract) and calling "9. migrate". You will need to fill in the data(bytes) field: - To migrate your entire stake to staking v0.2, pass in "0x" or leave the field empty. - To migrate a portion of your stake and withdraw the rest (or fully withdraw), pass in encoded data of ({LINK in JUELS to Migrate},{LINK in JUELS to WITHDRAW}). For example if you plan to migrate 100 LINK and withdraw 50 LINK. You encode "100000000000000000000,50000000000000000000" as a "uint256,uin256" type to get the data value "0x0000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000002b5e3af16b1880000". Online tools such as https://adibas03.github.io/online-ethereum-abi-encoder-decoder/#/encode can help you encode these values. Remember to add "0x" to the front of the result. You can verify your stake by going to https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#readContract and reading "26. getStakerPrincipal" NOTE: If you reached your max stake limit in v0.2 or the v0.2 staking pool is already full, your migration call will revert. ---- HOW TO STAKE - Stake Directly to v0.2 ---- NOTE: Double check the staking pool contract address you are sending your LINK to so you don't accidentally transfer your LINK to the wrong location. Go to the LINK contract (https://etherscan.io/token/0x514910771AF9Ca656af840dff83E8264EcF986CA#writeContract) and call "3. transferAndCall". Pass the node operator staking contract value as the `_to (address)` input (0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5), the LINK in juels (LINK x 10^18) in the `_value (uint256)` field, and `0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000` in the `_data(bytes)` field. You can verify your stake by going to https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#readContract and reading "26. getStakerPrincipal" ---- HOW TO WITHDRAW ---- - Begin the unbonding period by calling "28. unbond" at https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#writeContract - After the unbonding period (initially set at 28 days), you have the claim window (initially set at 7 days) to call "29. unstake", passing in the amount of LINK you want to unstake in JUELS ==================== REWARDS ==================== Interactions to read reward status and to withdraw rewards are done against the reward vault contract: https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813 ---- REWARD RAMP-UP ---- Check your reward ramp-up (0 -> 1e18, representing the 0 -> 100%) by going to https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813#readContract and calling "10. getMultiplier", passing in your address ---- Check Claimable Rewards ---- Check how much claimable rewards you can withdraw now by going to https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813#readContract and calling "12. getReward", passing in your address ---- Claim Rewards ---- To claim all claimable rewards, go to https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813#writeContract and call "6. claimReward" ==================== ALERTS ==================== If you believe valid alerting conditions have been met. Go to the alert controller contract at https://etherscan.io/address/0x27484ba119d12649be2a9854e4d3b44cc3fdbad7 and call "9. raiseAlert"