Commit 42b8711b authored by smartcontracts's avatar smartcontracts Committed by GitHub

feat: update Sepolia Drippie config to latest (#10810)

parent 0d26ce63
...@@ -2,6 +2,26 @@ ...@@ -2,6 +2,26 @@
"drippie": "0xd6F935Bd272BEE05bD64096D82970482EF16D64b", "drippie": "0xd6F935Bd272BEE05bD64096D82970482EF16D64b",
"gelato": "0x859E31b3848Ec384012EECc72C5c49821008296C", "gelato": "0x859E31b3848Ec384012EECc72C5c49821008296C",
"__comment": "Addresses of dripcheck contracts to be used in drips",
"dripchecks": [
{
"00__name": "CheckBalanceLow",
"01__address": "0xaF8C77CfeB57620c4D9dCC81df75a1F0Da7064Af"
},
{
"00__name": "CheckGelatoLow",
"01__address": "0x0fF11AfAC4146a0bABf7F9F042a22C8053a54674"
},
{
"00__name": "CheckSecrets",
"01__address": "0x32c1e36E733913388076D7c3055300072814bF2A"
},
{
"00__name": "CheckTrue",
"01__address": "0xcBCb3896Ddec35d91901768733C5d3738e10509F"
}
],
"__comment": "Prefix is used to namespace drips so that drip management can be handled modularly", "__comment": "Prefix is used to namespace drips so that drip management can be handled modularly",
"prefix": "faucetbridged", "prefix": "faucetbridged",
......
...@@ -2,6 +2,26 @@ ...@@ -2,6 +2,26 @@
"drippie": "0xd6F935Bd272BEE05bD64096D82970482EF16D64b", "drippie": "0xd6F935Bd272BEE05bD64096D82970482EF16D64b",
"gelato": "0x859E31b3848Ec384012EECc72C5c49821008296C", "gelato": "0x859E31b3848Ec384012EECc72C5c49821008296C",
"__comment": "Addresses of dripcheck contracts to be used in drips",
"dripchecks": [
{
"00__name": "CheckBalanceLow",
"01__address": "0xaF8C77CfeB57620c4D9dCC81df75a1F0Da7064Af"
},
{
"00__name": "CheckGelatoLow",
"01__address": "0x0fF11AfAC4146a0bABf7F9F042a22C8053a54674"
},
{
"00__name": "CheckSecrets",
"01__address": "0x32c1e36E733913388076D7c3055300072814bF2A"
},
{
"00__name": "CheckTrue",
"01__address": "0xcBCb3896Ddec35d91901768733C5d3738e10509F"
}
],
"__comment": "Prefix is used to namespace drips so that drip management can be handled modularly", "__comment": "Prefix is used to namespace drips so that drip management can be handled modularly",
"prefix": "faucetcore", "prefix": "faucetcore",
......
...@@ -2,13 +2,33 @@ ...@@ -2,13 +2,33 @@
"drippie": "0xa0fF2a54AdC3fB33c44a141E67d194CF249258cb", "drippie": "0xa0fF2a54AdC3fB33c44a141E67d194CF249258cb",
"gelato": "0x2A6C106ae13B558BB9E2Ec64Bd2f1f7BEFF3A5E0", "gelato": "0x2A6C106ae13B558BB9E2Ec64Bd2f1f7BEFF3A5E0",
"__comment": "Addresses of dripcheck contracts to be used in drips",
"dripchecks": [
{
"00__name": "CheckBalanceLow",
"01__address": "0xaF8C77CfeB57620c4D9dCC81df75a1F0Da7064Af"
},
{
"00__name": "CheckGelatoLow",
"01__address": "0x0fF11AfAC4146a0bABf7F9F042a22C8053a54674"
},
{
"00__name": "CheckSecrets",
"01__address": "0x32c1e36E733913388076D7c3055300072814bF2A"
},
{
"00__name": "CheckTrue",
"01__address": "0xcBCb3896Ddec35d91901768733C5d3738e10509F"
}
],
"__comment": "Prefix is used to namespace drips so that drip management can be handled modularly", "__comment": "Prefix is used to namespace drips so that drip management can be handled modularly",
"prefix": "operations", "prefix": "operations",
"__comment": "Object attributes below are prefixed with numbers because of how foundry parses JSON into structs in alphabetical order", "__comment": "Object attributes below are prefixed with numbers because of how foundry parses JSON into structs in alphabetical order",
"drips": [ "drips": [
{ {
"00__name": "sequencer_v2", "00__name": "sequencer_v4",
"01__dripcheck": "CheckBalanceLow", "01__dripcheck": "CheckBalanceLow",
"02__checkparams": { "02__checkparams": {
"01__target": "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c", "01__target": "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c",
...@@ -20,7 +40,7 @@ ...@@ -20,7 +40,7 @@
"06__data": "" "06__data": ""
}, },
{ {
"00__name": "proposer_v2", "00__name": "proposer_v3",
"01__dripcheck": "CheckBalanceLow", "01__dripcheck": "CheckBalanceLow",
"02__checkparams": { "02__checkparams": {
"01__target": "0x49277EE36A024120Ee218127354c4a3591dc90A9", "01__target": "0x49277EE36A024120Ee218127354c4a3591dc90A9",
...@@ -32,7 +52,19 @@ ...@@ -32,7 +52,19 @@
"06__data": "" "06__data": ""
}, },
{ {
"00__name": "gelato_v2", "00__name": "challenger_v2",
"01__dripcheck": "CheckBalanceLow",
"02__checkparams": {
"01__target": "0xffb026F67DA0869EB3ABB090cB7F015CE0925CdF",
"02__threshold": 1000000000000000000000
},
"03__recipient": "0x49277EE36A024120Ee218127354c4a3591dc90A9",
"04__value": 100000000000000000000,
"05__interval": 3600,
"06__data": ""
},
{
"00__name": "gelato_v3",
"01__dripcheck": "CheckGelatoLow", "01__dripcheck": "CheckGelatoLow",
"02__checkparams": { "02__checkparams": {
"00__treasury": "0x7506C12a824d73D9b08564d5Afc22c949434755e", "00__treasury": "0x7506C12a824d73D9b08564d5Afc22c949434755e",
...@@ -43,19 +75,6 @@ ...@@ -43,19 +75,6 @@
"04__value": 1000000000000000000, "04__value": 1000000000000000000,
"05__interval": 86400, "05__interval": 86400,
"06__data": "0x0000000000000000000000000Cd438409d5Cac9D2E076Ac7Bd0Bf2377E99BB6e4" "06__data": "0x0000000000000000000000000Cd438409d5Cac9D2E076Ac7Bd0Bf2377E99BB6e4"
},
{
"00__name": "secrets_v2",
"01__dripcheck": "CheckSecrets",
"02__checkparams": {
"00__delay": 43200,
"01__secretHashMustExist": "0x565fa8c7daa859353b5b328b97b12c7d66c5832b2a24d4e0f739a65ad266a46f",
"02__secretHashMustNotExist": "0xbc362b01d69a85dff1793803dde67df1f338f37a36fdc73dddf27283d215e614"
},
"03__recipient": "0xCd438409d5Cac9D2E076Ac7Bd0Bf2377E99BB6e4",
"04__value": 1000000000000000000,
"05__interval": 3600,
"06__data": ""
} }
] ]
} }
{
"version": "1.0",
"chainId": "11155111",
"createdAt": 1718216278,
"meta": {
"name": "Transactions Batch",
"description": "",
"txBuilderVersion": "1.16.5",
"createdFromSafeAddress": "0x422c32c10b16c442426Eb7E93b07f7B521294565",
"createdFromOwnerAddress": "",
"checksum": "0xc2d69412777b9d9ba16c95d12f3aca13820b37a8db5f9d436f63058c48994cde"
},
"transactions": [
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000176f7065726174696f6e735f73657175656e6365725f7632000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0xee8ca3b568c76a8fa53bf566fc0934edddf25deba2199a53772b6c3a05ce20f5b8d220f8",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000166f7065726174696f6e735f70726f706f7365725f763200000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0xee8ca3b5c790be67575b95a6b0c9f618fbdce9b72b6e7202233f0afe087bb641e3d1f0e8",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000146f7065726174696f6e735f67656c61746f5f7632000000000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0xee8ca3b5f666fe8af1ff0032744dcf71fbbeada5e47079f37425a8a0069350bbb508c3db",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000186f7065726174696f6e735f6368616c6c656e6765725f76310000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0xee8ca3b53fa0ce0493ae4a3e182ec7ed727076c63bf2d7761a43e328e118b2afdf86afc3",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0xe551cdaa0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000176f7065726174696f6e735f73657175656e6365725f763400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000af8c77cfeb57620c4d9dcc81df75a1f0da7064af00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000400000000000000000000000008f23bb38f531600e5d8fddaaec41f13fab46e98c00000000000000000000000000000000000000000000003635c9adc5dea00000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000008f23bb38f531600e5d8fddaaec41f13fab46e98c00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0x3323b467000000000000000000000000a0ff2a54adc3fb33c44a141e67d194cf249258cb000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006467148cd2000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000176f7065726174696f6e735f73657175656e6365725f763400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000176f7065726174696f6e735f73657175656e6365725f763400000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057e40",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000176f7065726174696f6e735f73657175656e6365725f7634000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0xe551cdaa0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000166f7065726174696f6e735f70726f706f7365725f76330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015180000000000000000000000000af8c77cfeb57620c4d9dcc81df75a1f0da7064af00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004000000000000000000000000049277ee36a024120ee218127354c4a3591dc90a90000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000049277ee36a024120ee218127354c4a3591dc90a90000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000001158e460913d00000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0x3323b467000000000000000000000000a0ff2a54adc3fb33c44a141e67d194cf249258cb000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006467148cd2000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000166f7065726174696f6e735f70726f706f7365725f76330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000166f7065726174696f6e735f70726f706f7365725f76330000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083d600",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000166f7065726174696f6e735f70726f706f7365725f763300000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0xe551cdaa0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000186f7065726174696f6e735f6368616c6c656e6765725f7632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000af8c77cfeb57620c4d9dcc81df75a1f0da7064af00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ffb026f67da0869eb3abb090cb7f015ce0925cdf00000000000000000000000000000000000000000000003635c9adc5dea000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000049277ee36a024120ee218127354c4a3591dc90a900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0x3323b467000000000000000000000000a0ff2a54adc3fb33c44a141e67d194cf249258cb000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006467148cd2000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000186f7065726174696f6e735f6368616c6c656e6765725f7632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000186f7065726174696f6e735f6368616c6c656e6765725f7632000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057e40",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000186f7065726174696f6e735f6368616c6c656e6765725f76320000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0xe551cdaa0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000146f7065726174696f6e735f67656c61746f5f7633000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000ff11afac4146a0babf7f9f042a22c8053a5467400000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000600000000000000000000000007506c12a824d73d9b08564d5afc22c949434755e0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000cd438409d5cac9d2e076ac7bd0bf2377e99bb6e4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000007506c12a824d73d9b08564d5afc22c949434755e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002100000000000000000000000000cd438409d5cac9d2e076ac7bd0bf2377e99bb6e400000000000000000000000000000000000000000000000000000000000000",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0x2a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0",
"value": "0",
"data": "0x3323b467000000000000000000000000a0ff2a54adc3fb33c44a141e67d194cf249258cb000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006467148cd2000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000146f7065726174696f6e735f67656c61746f5f763300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000146f7065726174696f6e735f67656c61746f5f763300000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083d600",
"contractMethod": null,
"contractInputsValues": null
},
{
"to": "0xa0ff2a54adc3fb33c44a141e67d194cf249258cb",
"value": "0",
"data": "0x9bc94d010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000146f7065726174696f6e735f67656c61746f5f7633000000000000000000000000",
"contractMethod": null,
"contractInputsValues": null
}
]
}
\ No newline at end of file
...@@ -7,8 +7,6 @@ import { stdJson } from "forge-std/StdJson.sol"; ...@@ -7,8 +7,6 @@ import { stdJson } from "forge-std/StdJson.sol";
import { IAutomate as IGelato } from "gelato/interfaces/IAutomate.sol"; import { IAutomate as IGelato } from "gelato/interfaces/IAutomate.sol";
import { Artifacts } from "scripts/Artifacts.s.sol";
import { Drippie } from "src/periphery/drippie/Drippie.sol"; import { Drippie } from "src/periphery/drippie/Drippie.sol";
import { CheckBalanceLow } from "src/periphery/drippie/dripchecks/CheckBalanceLow.sol"; import { CheckBalanceLow } from "src/periphery/drippie/dripchecks/CheckBalanceLow.sol";
import { CheckGelatoLow } from "src/periphery/drippie/dripchecks/CheckGelatoLow.sol"; import { CheckGelatoLow } from "src/periphery/drippie/dripchecks/CheckGelatoLow.sol";
...@@ -16,10 +14,16 @@ import { CheckSecrets } from "src/periphery/drippie/dripchecks/CheckSecrets.sol" ...@@ -16,10 +14,16 @@ import { CheckSecrets } from "src/periphery/drippie/dripchecks/CheckSecrets.sol"
/// @title DrippieConfig /// @title DrippieConfig
/// @notice Loads Drippie configuration from a JSON file. /// @notice Loads Drippie configuration from a JSON file.
contract DrippieConfig is Script, Artifacts { contract DrippieConfig is Script {
/// @notice Error emitted when an unknown drip check is encountered. /// @notice Error emitted when an unknown drip check is encountered.
error UnknownDripCheck(string name); error UnknownDripCheck(string name);
/// @notice Struct describing a dripcheck.
struct DripCheck {
string name;
address addr;
}
/// @notice Drip configuration with only name and dripcheck. /// @notice Drip configuration with only name and dripcheck.
struct CoreDripConfig { struct CoreDripConfig {
string name; string name;
...@@ -55,11 +59,11 @@ contract DrippieConfig is Script, Artifacts { ...@@ -55,11 +59,11 @@ contract DrippieConfig is Script, Artifacts {
/// @notice Mapping of drip names in the config. /// @notice Mapping of drip names in the config.
mapping(string => bool) public names; mapping(string => bool) public names;
/// @notice Mapping of dripcheck names to addresses.
mapping(string => address) public dripchecks;
/// @param _path Path to the configuration file. /// @param _path Path to the configuration file.
constructor(string memory _path) { constructor(string memory _path) {
// Make sure artifacts are set up.
Artifacts.setUp();
// Load the configuration file. // Load the configuration file.
console.log("DrippieConfig: reading file %s", _path); console.log("DrippieConfig: reading file %s", _path);
try vm.readFile(_path) returns (string memory data) { try vm.readFile(_path) returns (string memory data) {
...@@ -88,6 +92,12 @@ contract DrippieConfig is Script, Artifacts { ...@@ -88,6 +92,12 @@ contract DrippieConfig is Script, Artifacts {
CoreDripConfig[] memory corecfg = abi.decode(stdJson.parseRaw(_json, "$.drips"), (CoreDripConfig[])); CoreDripConfig[] memory corecfg = abi.decode(stdJson.parseRaw(_json, "$.drips"), (CoreDripConfig[]));
console.log("DrippieConfig: found %d drips", corecfg.length); console.log("DrippieConfig: found %d drips", corecfg.length);
// Load the dripchecks.
DripCheck[] memory checks = abi.decode(stdJson.parseRaw(_json, "$.dripchecks"), (DripCheck[]));
for (uint256 i = 0; i < checks.length; i++) {
dripchecks[checks[i].name] = checks[i].addr;
}
// Iterate and parse all of the drips. // Iterate and parse all of the drips.
for (uint256 i = 0; i < corecfg.length; i++) { for (uint256 i = 0; i < corecfg.length; i++) {
// Log so we know what's being loaded. // Log so we know what's being loaded.
...@@ -98,7 +108,7 @@ contract DrippieConfig is Script, Artifacts { ...@@ -98,7 +108,7 @@ contract DrippieConfig is Script, Artifacts {
// Make sure the dripcheck is deployed. // Make sure the dripcheck is deployed.
string memory dripcheck = corecfg[i].dripcheck; string memory dripcheck = corecfg[i].dripcheck;
console.log("DrippieConfig: attempting to get address for %s", dripcheck); console.log("DrippieConfig: attempting to get address for %s", dripcheck);
mustGetAddress(dripcheck); mustGetDripCheck(dripcheck);
// Generate the base JSON path string. // Generate the base JSON path string.
string memory p = string.concat("$.drips[", vm.toString(i), "]"); string memory p = string.concat("$.drips[", vm.toString(i), "]");
...@@ -149,6 +159,14 @@ contract DrippieConfig is Script, Artifacts { ...@@ -149,6 +159,14 @@ contract DrippieConfig is Script, Artifacts {
return abi.encode(drips[_index]); return abi.encode(drips[_index]);
} }
/// @notice Retrieves the address of a dripcheck and reverts if it is not found.
/// @param _name Name of the dripcheck.
/// @return addr_ Address of the dripcheck.
function mustGetDripCheck(string memory _name) public view returns (address addr_) {
addr_ = dripchecks[_name];
require(addr_ != address(0), "DrippieConfig: unknown dripcheck");
}
/// @notice Check if two strings are equal. /// @notice Check if two strings are equal.
/// @param _a First string. /// @param _a First string.
/// @param _b Second string. /// @param _b Second string.
......
...@@ -12,7 +12,6 @@ import { LibTaskId as GelatoTaskId } from "gelato/libraries/LibTaskId.sol"; ...@@ -12,7 +12,6 @@ import { LibTaskId as GelatoTaskId } from "gelato/libraries/LibTaskId.sol";
import { GelatoBytes } from "gelato/vendor/gelato/GelatoBytes.sol"; import { GelatoBytes } from "gelato/vendor/gelato/GelatoBytes.sol";
import { Config } from "scripts/libraries/Config.sol"; import { Config } from "scripts/libraries/Config.sol";
import { Artifacts } from "scripts/Artifacts.s.sol";
import { DrippieConfig } from "scripts/periphery/drippie/DrippieConfig.s.sol"; import { DrippieConfig } from "scripts/periphery/drippie/DrippieConfig.s.sol";
import { Drippie } from "src/periphery/drippie/Drippie.sol"; import { Drippie } from "src/periphery/drippie/Drippie.sol";
...@@ -20,7 +19,7 @@ import { IDripCheck } from "src/periphery/drippie/IDripCheck.sol"; ...@@ -20,7 +19,7 @@ import { IDripCheck } from "src/periphery/drippie/IDripCheck.sol";
/// @title ManageDrippie /// @title ManageDrippie
/// @notice Script for managing drips in the Drippie contract. /// @notice Script for managing drips in the Drippie contract.
contract ManageDrippie is Script, Artifacts { contract ManageDrippie is Script {
/// @notice Struct that contains the data for a Gelato task. /// @notice Struct that contains the data for a Gelato task.
struct GelatoTaskData { struct GelatoTaskData {
address taskCreator; address taskCreator;
...@@ -41,8 +40,7 @@ contract ManageDrippie is Script, Artifacts { ...@@ -41,8 +40,7 @@ contract ManageDrippie is Script, Artifacts {
} }
/// @notice Sets up the deployment script. /// @notice Sets up the deployment script.
function setUp() public override { function setUp() public {
Artifacts.setUp();
cfg = new DrippieConfig(Config.deployConfigPath()); cfg = new DrippieConfig(Config.deployConfigPath());
console.log("Config path: %s", Config.deployConfigPath()); console.log("Config path: %s", Config.deployConfigPath());
} }
...@@ -94,7 +92,7 @@ contract ManageDrippie is Script, Artifacts { ...@@ -94,7 +92,7 @@ contract ManageDrippie is Script, Artifacts {
_config: Drippie.DripConfig({ _config: Drippie.DripConfig({
reentrant: false, reentrant: false,
interval: drip.interval, interval: drip.interval,
dripcheck: IDripCheck(mustGetAddress(drip.dripcheck)), dripcheck: IDripCheck(cfg.mustGetDripCheck(drip.dripcheck)),
checkparams: drip.checkparams, checkparams: drip.checkparams,
actions: actions actions: actions
}) })
......
import fs from 'fs'
import crypto from 'crypto'
interface ForgeTransaction {
contractAddress: string
transaction: {
to: string
value: string
input: string
}
}
interface ForgeTransactionFile {
transactions: ForgeTransaction[]
timestamp: number
chain: number
}
interface SafeTransaction {
to: string
value: string
data: string
contractMethod: null
contractInputsValues: null
}
interface SafeTransactionFile {
version: string
chainId: string
createdAt: number
meta: {
name: string
description: string
txBuilderVersion: string
createdFromSafeAddress: string
createdFromOwnerAddress: string
checksum: string
}
transactions: SafeTransaction[]
}
/**
* Calculate the checksum for a safe transaction file.
* @param data The safe transaction file.
* @returns The checksum.
*/
const checksum = (data: SafeTransactionFile): string => {
const hash = crypto.createHash('sha256')
hash.update(JSON.stringify(data.transactions))
return `0x${hash.digest('hex')}`
}
/**
* Transform a forge transaction file into a safe transaction file.
* @param forge Forge transaction file.
* @param address Safe address.
* @returns Safe transaction file.
*/
const transform = (
forge: ForgeTransactionFile,
address: string
): SafeTransactionFile => {
const transactions = forge.transactions.map((tx) => ({
to: tx.contractAddress,
value: '0',
data: tx.transaction.input,
contractMethod: null,
contractInputsValues: null,
}))
const safe: SafeTransactionFile = {
version: '1.0',
chainId: forge.chain.toString(),
createdAt: forge.timestamp,
meta: {
name: 'Transactions Batch',
description: '',
txBuilderVersion: '1.16.5',
createdFromSafeAddress: address,
createdFromOwnerAddress: '',
checksum: '',
},
transactions,
}
safe.meta.checksum = checksum(safe)
return safe
}
/**
* Get a required argument from the command line.
* @param name The argument name.
* @returns The argument value.
*/
const reqarg = (name: string) => {
const value = process.argv.find((arg) => arg.startsWith(`--${name}=`))
if (!value) {
console.error(`Please provide --${name} argument`)
process.exit(1)
}
return value.split('=')[1]
}
/**
* Main function.
*/
const main = () => {
const input = reqarg('input')
const output = reqarg('output')
const address = reqarg('safe')
// Load the original forge transaction file.
const forge: ForgeTransactionFile = JSON.parse(fs.readFileSync(input, 'utf8'))
// Transform the forge transaction file into a safe transaction file.
const safe = transform(forge, address)
// Write the safe transaction file.
fs.writeFileSync(output, JSON.stringify(safe, null, 2), 'utf8')
}
// Run the main function.
main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment