├── .gitattributes ├── LICENSE ├── README.md ├── instructions.txt └── proofs.tsv /.gitattributes: -------------------------------------------------------------------------------- 1 | *.tsv filter=lfs diff=lfs merge=lfs -text -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2023 SmartContract ChainLink, Ltd. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Chainlink Staking v0.2 Public Guide 2 | 3 | Instructions and resources to stake directly against the staking contract or through etherscan 4 | 5 | ## Resources 6 | 7 | `instructions.txt` - instructions to interact with the staking contract 8 | 9 | `proofs.tsv` - proofs required for early access staking 10 | 11 | ## Get instructions on IPFS 12 | 13 | `instructions.txt` has been uploaded to IPFS: https://ipfs.io/ipfs/QmUWDupeN4D5vHNWH6dEbNuoiZz9bnbqTHw61L27RG6tE2 -------------------------------------------------------------------------------- /instructions.txt: -------------------------------------------------------------------------------- 1 | Chainlink Staking v0.2 - Direct Staking Guide 2 | 3 | This document describes how to interact with the Chainlink v0.2 staking protocol on Ethereum mainnet directly against the contract or through etherscan. 4 | 5 | Official addresses: 6 | LINK token address - https://etherscan.io/token/0x514910771AF9Ca656af840dff83E8264EcF986CA 7 | Staking v0.1 protocol address - https://etherscan.io/address/0x3feB1e09b4bb0E7f0387CeE092a52e85797ab889 8 | Staking v0.2 community staking pool address - https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e 9 | Staking v0.2 node operator staking pool address - https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5 10 | Staking v0.2 reward vault address - https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813 11 | Staking v0.2 price feed alerts controller address - https://etherscan.io/address/0x27484ba119d12649be2a9854e4d3b44cc3fdbad7 12 | 13 | ==================== 14 | COMMUNITY STAKER 15 | ==================== 16 | 17 | Verify staking conditions. You can do this by going to the read contract tab in etherscan: https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract 18 | 19 | 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. 20 | 21 | ---- 22 | HOW TO STAKE - Migrate / Withdraw stake from v0.1 23 | ---- 24 | 25 | 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: 26 | 27 | - To migrate your entire stake to staking v0.2, pass in "0x" or leave the field empty. 28 | - 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 29 | 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. 30 | 31 | You can verify your stake by going to https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract and reading "18. getStakerPrincipal" 32 | 33 | 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. 34 | 35 | ---- 36 | HOW TO STAKE - Early Access 37 | ---- 38 | 39 | 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. 40 | 41 | 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. 42 | 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. 43 | 44 | 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. 45 | 46 | For example, to stake with the address `0xb8cc1df2f93d114986cee6558e8e681824e31343`, use the proof found in `proofs.tsv`: 47 | 48 | `0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000013978eee63d5743ddf4876a981167d92fb6bc80feb2d2ddb9ff3e083c3e6f1f860cde34169113cba87b76059d29edc3ec3e95c781998324b30bf014720049346337410c63eccf761ec57836c2332fcfe7cd84695b5852780d02a524382a83f11bacf514a8e29474ab2126e4914732b9670920ae161fc728eb5492f9cf0001f6f79d8aabd7748ba517b38b7274d4d32087661157d54c8f3e45a1bca366a4bf25a75b4f09f9fb602ae643ecc6f29a37042bdc204bc00de6d009e79b777bbd551c216af90ebf0ee083eaa748599d60a4071c5b3fd4d6b09a80bd01407b79086446ebca8ea7d8dfbb6df5ed2d85851fe6b4bbacb69c08d07fcf005e4a4ef74bf83b1e748c2434b1fbe764d8eca70d6c6ace33f510f2346fd8f10b2f122627e986f83faf79d5cf9e57113ba0125b9397dc1ecdb7e2c10ddaa9f0f1699a25d7f355688eadbbf1ee8093429d366a051ec1a26ed623622c0f66746827f4a2bd1423fe56841554bdb47586b0161af92821126d558bfef0a119c276edbde3f4d273824722c95049bf0eb96280e4cda0b0527efd1bebbe828c1cf5d68465fab239919305e9c0c23d239bd46144a070f1e2c402c2ab56176e1ee3d877c2b70d4b72ba8e9f631e20f1cc2a0277a7880508bdac1f594d1f155ef21c8329fbcae5f3b7a0487036d9ca75ab94ea8a05950b525723193ae09b6ad712bf56280224a37d11832e91bb568784156fdaebc12b2fe65ef2223a6a75676d101e35cade02780f62b04c7fd9c21262d77ea236f76b6af895330960d88d34d3e243b01797ddb26a93104ab10ea91b88f097c48d620932df634560def55529fa7f5f5a126a6398c8c652ad10a9287` 49 | 50 | You can verify your stake by going to https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract and reading "18. getStakerPrincipal" 51 | 52 | ---- 53 | HOW TO STAKE - General Access 54 | ---- 55 | 56 | 57 | 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. 58 | 59 | 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. 60 | 61 | You can verify your stake by going to https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#readContract and reading "18. getStakerPrincipal" 62 | 63 | ---- 64 | HOW TO WITHDRAW 65 | ---- 66 | 67 | - Begin the unbonding period by calling "23. unbond" at https://etherscan.io/address/0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e#writeContract 68 | - 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 69 | 70 | ==================== 71 | NODE OPERATOR STAKER 72 | ==================== 73 | 74 | Verify staking conditions. You can do this by going to the read contract tab in etherscan: https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#readContract 75 | 76 | 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. 77 | 78 | ---- 79 | HOW TO STAKE - Migrate / Withdraw stake from v0.1 80 | ---- 81 | 82 | 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: 83 | 84 | - To migrate your entire stake to staking v0.2, pass in "0x" or leave the field empty. 85 | - 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 86 | 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. 87 | 88 | You can verify your stake by going to https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#readContract and reading "26. getStakerPrincipal" 89 | 90 | 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. 91 | 92 | ---- 93 | HOW TO STAKE - Stake Directly to v0.2 94 | ---- 95 | 96 | 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. 97 | 98 | 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. 99 | 100 | You can verify your stake by going to https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#readContract and reading "26. getStakerPrincipal" 101 | 102 | ---- 103 | HOW TO WITHDRAW 104 | ---- 105 | 106 | - Begin the unbonding period by calling "28. unbond" at https://etherscan.io/address/0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5#writeContract 107 | - 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 108 | 109 | ==================== 110 | REWARDS 111 | ==================== 112 | 113 | Interactions to read reward status and to withdraw rewards are done against the reward vault contract: https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813 114 | 115 | ---- 116 | REWARD RAMP-UP 117 | ---- 118 | 119 | 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 120 | 121 | ---- 122 | Check Claimable Rewards 123 | ---- 124 | 125 | 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 126 | 127 | ---- 128 | Claim Rewards 129 | ---- 130 | 131 | To claim all claimable rewards, go to https://etherscan.io/address/0x996913c8c08472f584ab8834e925b06d0eb1d813#writeContract and call "6. claimReward" 132 | 133 | ==================== 134 | ALERTS 135 | ==================== 136 | 137 | 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" -------------------------------------------------------------------------------- /proofs.tsv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ec2cc6247db1c1dfcdbecda855869830793e8f6826cbb1ec73f48221535eab84 3 | size 592544478 4 | --------------------------------------------------------------------------------