|
| 1 | +import fs from 'fs' |
1 | 2 | import {
|
2 | 3 | CONTRACT_TYPES,
|
3 | 4 | AfterExecute,
|
@@ -122,7 +123,7 @@ const makeContractInput = async (
|
122 | 123 | input.offchainConfig,
|
123 | 124 | input.secret,
|
124 | 125 | )
|
125 |
| - let onchainConfig = [] // onchain config should be empty array for input (generate onchain) |
| 126 | + const onchainConfig = [] // onchain config should be empty array for input (generate onchain) |
126 | 127 | return [oracles, input.f, onchainConfig, 2, bytesToFelts(offchainConfig)]
|
127 | 128 | }
|
128 | 129 |
|
@@ -172,16 +173,36 @@ const afterExecute: AfterExecute<SetConfigInput, ContractInput> = (context, inpu
|
172 | 173 | if (!txInfo.isSuccess()) {
|
173 | 174 | return { successfulConfiguration: false }
|
174 | 175 | }
|
175 |
| - const eventData = txInfo.events[0].data |
176 |
| - |
177 | 176 | const events = context.contract.parseEvents(txInfo)
|
178 | 177 | const event = events[events.length - 1]['ConfigSet']
|
179 | 178 | const offchainConfig = decodeOffchainConfigFromEventData(event.offchain_config as BigNumberish[])
|
| 179 | + |
180 | 180 | try {
|
181 | 181 | // remove cfg keys from user input
|
182 | 182 | delete input.user.offchainConfig.configPublicKeys
|
183 | 183 | assert.deepStrictEqual(offchainConfig, input.user.offchainConfig)
|
184 | 184 | deps.logger.success('Configuration was successfully set')
|
| 185 | + |
| 186 | + // write lastConfigDigest back to RDD |
| 187 | + const configDigest = `0x0${(event.latest_config_digest as bigint).toString(16)}` |
| 188 | + deps.logger.info(`ℹ️ lastConfigDigest to save in RDD: ${configDigest}`) |
| 189 | + if (context.flags.rdd) { |
| 190 | + deps.logger.info( |
| 191 | + `ℹ️ RDD file ${context.flags.rdd} found! Will automatically update lastConfigDigest for you`, |
| 192 | + ) |
| 193 | + const rdd = getRDD(context.flags.rdd) |
| 194 | + const newConfig = { ...rdd.config, ...{ lastConfigDigest: configDigest } } |
| 195 | + const newRdd = { ...rdd, ...{ config: newConfig } } |
| 196 | + fs.writeFileSync(context.flags.rdd, JSON.stringify(newRdd, null, 2)) |
| 197 | + deps.logger.info( |
| 198 | + `✅ RDD file ${context.flags.rdd} updated. Please reformat RDD (run ./bin/generate and ./bin/degenerate) as needed`, |
| 199 | + ) |
| 200 | + } else { |
| 201 | + deps.logger.info( |
| 202 | + `❗❗ no rdd file input, you must manually update lastConfigDigest in rdd yourself`, |
| 203 | + ) |
| 204 | + } |
| 205 | + |
185 | 206 | return { successfulConfiguration: true }
|
186 | 207 | } catch (e) {
|
187 | 208 | deps.logger.error('Configuration set is different than provided')
|
|
0 commit comments