From a68f1bdb19619f0f2a263a72eacced9286294839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Sun, 19 Oct 2025 11:30:16 +0200 Subject: [PATCH 01/10] fix: declare missing IWitOracleConsumer.witOracle() --- contracts/WitPriceFeeds.sol | 2 ++ contracts/apps/WitPriceFeedsV3.sol | 15 ++++++++++----- contracts/interfaces/IWitOracleConsumer.sol | 3 +++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/contracts/WitPriceFeeds.sol b/contracts/WitPriceFeeds.sol index 512559fb..d72e7fd8 100644 --- a/contracts/WitPriceFeeds.sol +++ b/contracts/WitPriceFeeds.sol @@ -23,4 +23,6 @@ abstract contract WitPriceFeeds type(IWitPriceFeeds).interfaceId ); } + + function witOracle() virtual override (IWitOracleConsumer, IWitPriceFeeds) external view returns (address); } diff --git a/contracts/apps/WitPriceFeedsV3.sol b/contracts/apps/WitPriceFeedsV3.sol index a5fe2f31..87c51c12 100644 --- a/contracts/apps/WitPriceFeedsV3.sol +++ b/contracts/apps/WitPriceFeedsV3.sol @@ -14,6 +14,7 @@ import { IWitPriceFeeds, IWitPriceFeedsAdmin, IWitPriceFeedsConsumer, + IWitOracleConsumer, WitPriceFeeds } from "../WitPriceFeeds.sol"; @@ -61,12 +62,16 @@ contract WitPriceFeedsV3 using WitPriceFeedsDataLib for UpdateConditions; using WitPriceFeedsDataLib for WitPriceFeedsDataLib.PriceFeed; - address immutable public override witOracle; + address immutable public __WIT_ORACLE; function class() virtual override public pure returns (string memory) { return type(WitPriceFeedsV3).name; } + function witOracle() virtual override external view returns (address) { + return __WIT_ORACLE; + } + constructor( address _witOracle, address _operator @@ -83,7 +88,7 @@ contract WitPriceFeedsV3 || _witOracleSpecs == type(IWitOracle).interfaceId ^ type(IWitOracleQueriable).interfaceId, "uncompliant wit/oracle" ); - witOracle = _witOracle; + __WIT_ORACLE = _witOracle; __storage().defaultUpdateConditions = UpdateConditions({ callbackGas: 1_000_000, computeEma: false, @@ -564,7 +569,7 @@ contract WitPriceFeedsV3 _symbol, _radonBytecode, _exponent, - IWitOracle(witOracle).registry() + IWitOracle(__WIT_ORACLE).registry() ) returns (bytes4 _footprint, Witnet.RadonHash _radonHash) { emit PriceFeedOracle( @@ -600,7 +605,7 @@ contract WitPriceFeedsV3 _symbol, _radonHash, _exponent, - IWitOracle(witOracle).registry() + IWitOracle(__WIT_ORACLE).registry() ) returns (bytes4 _footprint) { emit PriceFeedOracle( @@ -655,7 +660,7 @@ contract WitPriceFeedsV3 report.queryParams.witCommitteeSize >= _updateConditions.minWitnesses, InvalidGovernanceTarget() ); - Witnet.DataResult memory _dataResult = IWitOracle(witOracle).pushDataReport( + Witnet.DataResult memory _dataResult = IWitOracle(__WIT_ORACLE).pushDataReport( report, proof ); diff --git a/contracts/interfaces/IWitOracleConsumer.sol b/contracts/interfaces/IWitOracleConsumer.sol index 328fff02..bc15e626 100644 --- a/contracts/interfaces/IWitOracleConsumer.sol +++ b/contracts/interfaces/IWitOracleConsumer.sol @@ -11,4 +11,7 @@ interface IWitOracleConsumer { /// @dev The referred `witOracle()` contract emits a `IWitOracle.DataReport` for /// every `Witnet.DataPushReport` proven to be authentic. function pushDataReport(Witnet.DataPushReport calldata report, bytes calldata proof) external; + + /// Returns the address of the Wit/Oracle bridge that will be used to verify pushed data reprots. + function witOracle() external view returns (address); } From c965929ab6330c3b7d12285d52c32c7780b5343c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 12:03:56 +0200 Subject: [PATCH 02/10] fix(wpf): check reverseIds when settling witnet pfs --- contracts/data/WitPriceFeedsDataLib.sol | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/contracts/data/WitPriceFeedsDataLib.sol b/contracts/data/WitPriceFeedsDataLib.sol index 5bd33494..0df87954 100644 --- a/contracts/data/WitPriceFeedsDataLib.sol +++ b/contracts/data/WitPriceFeedsDataLib.sol @@ -412,6 +412,11 @@ library WitPriceFeedsDataLib { address(this), Witnet.RadonHash.unwrap(_radonHash) ); + require( + IWitPriceFeedsTypes.ID4.unwrap(data().reverseIds[_radonHash]) == bytes4(0), + "repeated rad hash" + ); + data().reverseIds[_radonHash] = id4; _footprint = settlePriceFeedFootprint(); } @@ -434,6 +439,11 @@ library WitPriceFeedsDataLib { address(this), Witnet.RadonHash.unwrap(radonHash) ); + require( + IWitPriceFeedsTypes.ID4. unwrap(data().reverseIds[radonHash]) == bytes4(0), + "repeated rad hash" + ); + data().reverseIds[radonHash] = id4; return settlePriceFeedFootprint(); } From 916d7be0ef4098cac116580140d91b789501b9c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 12:04:50 +0200 Subject: [PATCH 03/10] fix(wpf): pushing first update on witnet pfs --- contracts/apps/WitPriceFeedsV3.sol | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/contracts/apps/WitPriceFeedsV3.sol b/contracts/apps/WitPriceFeedsV3.sol index 87c51c12..823b316c 100644 --- a/contracts/apps/WitPriceFeedsV3.sol +++ b/contracts/apps/WitPriceFeedsV3.sol @@ -679,15 +679,16 @@ contract WitPriceFeedsV3 HotPrice() ); - int8 _exponent = __record.lastUpdate.exponent; - uint64 _deltaSecs = uint24( - Witnet.Timestamp.unwrap(__record.lastUpdate.timestamp) - - Witnet.Timestamp.unwrap(_dataResult.timestamp) + int8 _exponent = __record.exponent; + Witnet.Timestamp _lastTimestamp = __record.lastUpdate.timestamp; + uint64 _deltaSecs = _lastTimestamp.isZero() ? 0 : uint24( + Witnet.Timestamp.unwrap(_dataResult.timestamp) + - Witnet.Timestamp.unwrap(_lastTimestamp) ); uint64 _lastPrice = __record.lastUpdate.price; uint64 _nextPrice = _dataResult.fetchUint(); - int56 _deltaPrice = int56(int64(_nextPrice) - int64(_lastPrice)); - uint64 _deviation1000 = ( + int56 _deltaPrice = _lastPrice == 0 ? int56(0) : int56(int64(_nextPrice) - int64(_lastPrice)); + uint64 _deviation1000 = _lastPrice == 0 ? uint64(0) : ( _deltaPrice >= 0 ? uint56(_deltaPrice * 1000) / _lastPrice : uint56(-_deltaPrice * 1000) / _lastPrice @@ -699,6 +700,7 @@ contract WitPriceFeedsV3 ); __record.lastUpdate.deltaPrice = _deltaPrice; + __record.lastUpdate.exponent = _exponent; __record.lastUpdate.price = _nextPrice; __record.lastUpdate.timestamp = _dataResult.timestamp; __record.lastUpdate.trail = _dataResult.drTxHash; From 37af644018f021dc7135518741d955a25412e022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 12:05:20 +0200 Subject: [PATCH 04/10] fix(lib): peeking radon type on one-byte results --- contracts/libs/Witnet.sol | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/contracts/libs/Witnet.sol b/contracts/libs/Witnet.sol index 4721204f..438ca506 100644 --- a/contracts/libs/Witnet.sol +++ b/contracts/libs/Witnet.sol @@ -772,17 +772,15 @@ library Witnet { bytes7 private constant _CBOR_MAJOR_TYPE_TO_RADON_DATA_TYPES_MAP = 0x04040307010600; function peekRadonDataType(WitnetCBOR.CBOR memory cbor) internal pure returns (RadonDataTypes _type) { _type = RadonDataTypes.Any; - if (!cbor.eof()) { - if (cbor.majorType <= 6) { - return RadonDataTypes(uint8(bytes1(_CBOR_MAJOR_TYPE_TO_RADON_DATA_TYPES_MAP[cbor.majorType]))); + if (cbor.majorType <= 6) { + return RadonDataTypes(uint8(bytes1(_CBOR_MAJOR_TYPE_TO_RADON_DATA_TYPES_MAP[cbor.majorType]))); + + } else if (cbor.majorType == 7) { + if (cbor.additionalInformation == 20 || cbor.additionalInformation == 21) { + return RadonDataTypes.Bool; - } else if (cbor.majorType == 7) { - if (cbor.additionalInformation == 20 || cbor.additionalInformation == 21) { - return RadonDataTypes.Bool; - - } else if (cbor.additionalInformation >= 25 && cbor.additionalInformation <= 27) { - return RadonDataTypes.Float; - } + } else if (cbor.additionalInformation >= 25 && cbor.additionalInformation <= 27) { + return RadonDataTypes.Float; } } } From 03d32835c09da74157f826ae7460d2dda4e6a804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 12:09:28 +0200 Subject: [PATCH 05/10] chore: do not highlight unmatching address on deployed immutable artifacts --- migrations/scripts/truffle/3_framework.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/migrations/scripts/truffle/3_framework.js b/migrations/scripts/truffle/3_framework.js index ef1974b0..5d4c8f43 100644 --- a/migrations/scripts/truffle/3_framework.js +++ b/migrations/scripts/truffle/3_framework.js @@ -227,6 +227,7 @@ module.exports = async function (_, network, [, from, reporter1, curator, report } } console.info() + } else { // create an array of implementations, including the one set up for current base, // but also all others in this network addresses file that share the same base @@ -287,16 +288,9 @@ module.exports = async function (_, network, [, from, reporter1, curator, report continue } utils.traceHeader(`${impl === target.impl ? `Immutable '${base}'` : `Legacy '${target.impl}'`}`) - if (target.impl !== impl || target.addr === targetAddr) { - console.info(" ", - `> contract address: \x1b[9${color}m`, target.addr, "\x1b[0m" - ) - } else { - console.info(" ", - `> contract address: \x1b[9${color}m ${target.addr}\x1b[0m !==`, - `\x1b[41m${targetAddr}\x1b[0m` - ) - } + console.info(" ", + `> contract address: \x1b[9${color}m`, target.addr, "\x1b[0m" + ) if (target.impl === impl) { baseArtifact.address = target.addr implArtifact.address = target.addr From f10718e48e2087dd90ae76f1f56126b5401a1987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 12:15:48 +0200 Subject: [PATCH 06/10] chore: this is 3.0.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 23fb7f2c..78e5dfa3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@witnet/solidity", - "version": "3.0.2", + "version": "3.0.4", "description": "Wit/Oracle Solidity Framework for EVM-compatible chains", "author": "Witnet Foundation ", "license": "MIT", From e12a003d48eef11c8794132e8230fc86dc9d307d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 16:29:06 +0200 Subject: [PATCH 07/10] test: bypass v2 pfs on ethereum:sepolia --- ...sol => WitPriceFeedsLegacyUpgradableBypass.sol} | 14 +++++++------- ...radableV3.sol => WitPriceFeedsV3Upgradable.sol} | 6 +++--- migrations/scripts/truffle/3_framework.js | 4 ++-- settings/artifacts.js | 7 ++++++- settings/specs.js | 6 +++++- 5 files changed, 23 insertions(+), 14 deletions(-) rename contracts/apps/{WitPriceFeedsLegacyBypassV3.sol => WitPriceFeedsLegacyUpgradableBypass.sol} (98%) rename contracts/apps/{WitPriceFeedsUpgradableV3.sol => WitPriceFeedsV3Upgradable.sol} (97%) diff --git a/contracts/apps/WitPriceFeedsLegacyBypassV3.sol b/contracts/apps/WitPriceFeedsLegacyUpgradableBypass.sol similarity index 98% rename from contracts/apps/WitPriceFeedsLegacyBypassV3.sol rename to contracts/apps/WitPriceFeedsLegacyUpgradableBypass.sol index 75139ba5..ee8e8c5c 100644 --- a/contracts/apps/WitPriceFeedsLegacyBypassV3.sol +++ b/contracts/apps/WitPriceFeedsLegacyUpgradableBypass.sol @@ -22,7 +22,7 @@ import {WitPriceFeedsLegacy, IWitOracleAppliance} from "../WitPriceFeedsLegacy.s /// @title WitPriceFeeds: Price Feeds upgradable repository reliant on the Wit/Oracle blockchain. /// @author Guillermo Díaz -contract WitPriceFeedsLegacyBypassV3 +contract WitPriceFeedsLegacyUpgradableBypass is Ownable2Step, WitnetUpgradableBase @@ -39,7 +39,7 @@ contract WitPriceFeedsLegacyBypassV3 } function class() public pure returns (string memory) { - return type(WitPriceFeedsLegacyBypassV3).name; + return type(WitPriceFeedsLegacyUpgradableBypass).name; } constructor( @@ -54,11 +54,11 @@ contract WitPriceFeedsLegacyBypassV3 "io.witnet.proxiable.feeds.price" ) { - _require( - _surrogate != address(0) - && _surrogate.code.length > 0, - "invalid surrogate" - ); + // _require( + // _surrogate != address(0) + // && _surrogate.code.length > 0, + // "invalid surrogate" + // ); surrogate = IWitPriceFeeds(_surrogate); registry = IWitOracleRadonRegistry( IWitOracle( diff --git a/contracts/apps/WitPriceFeedsUpgradableV3.sol b/contracts/apps/WitPriceFeedsV3Upgradable.sol similarity index 97% rename from contracts/apps/WitPriceFeedsUpgradableV3.sol rename to contracts/apps/WitPriceFeedsV3Upgradable.sol index edafc0ff..586cccdb 100644 --- a/contracts/apps/WitPriceFeedsUpgradableV3.sol +++ b/contracts/apps/WitPriceFeedsV3Upgradable.sol @@ -4,7 +4,7 @@ pragma solidity >=0.8.0 <0.9.0; import {WitPriceFeedsV3} from "./WitPriceFeedsV3.sol"; import {Upgradeable} from "../patterns/Upgradeable.sol"; -/// @title WitPriceFeedsUpgradableV3: On-demand Price Feeds registry for EVM-compatible L1/L2 chains, +/// @title WitPriceFeedsV3Upgradable: On-demand Price Feeds registry for EVM-compatible L1/L2 chains, /// natively powered by the Wit/Oracle blockchain, but yet capable of aggregating price /// updates from other on-chain price-feed oracles too, if required. /// @@ -26,7 +26,7 @@ import {Upgradeable} from "../patterns/Upgradeable.sol"; /// /// @author Guillermo Díaz -contract WitPriceFeedsUpgradableV3 +contract WitPriceFeedsV3Upgradable is Upgradeable, WitPriceFeedsV3 @@ -34,7 +34,7 @@ contract WitPriceFeedsUpgradableV3 bytes32 internal immutable __VERSION; function class() virtual override public pure returns (string memory) { - return type(WitPriceFeedsUpgradableV3).name; + return type(WitPriceFeedsV3Upgradable).name; } constructor( diff --git a/migrations/scripts/truffle/3_framework.js b/migrations/scripts/truffle/3_framework.js index 5d4c8f43..40987340 100644 --- a/migrations/scripts/truffle/3_framework.js +++ b/migrations/scripts/truffle/3_framework.js @@ -326,8 +326,8 @@ async function traceDeployedContractInfo (contract, from, targetVersion) { } else { console.info(" ", `> contract version: \x1b[1;39m${deployedVersion.slice(0, 5)}\x1b[0m${deployedVersion.slice(5)}`) } + console.info(" ", "> contract specs: ", await contract.specs.call({ from }), "\x1b[0m") } catch {} - console.info(" ", "> contract specs: ", await contract.specs.call({ from }), "\x1b[0m") } async function deployCoreBase (targetSpecs, targetAddr) { @@ -560,7 +560,7 @@ async function unfoldTargetSpecs (domain, target, targetBase, from, network, net specs.intrinsics.types.push(...new Array(specs.baseDeps.length).fill("address")) for (const index in specs.baseDeps) { const depsBase = specs.baseDeps[index] - const depsImpl = networkArtifacts.core[depsBase] + const depsImpl = networkArtifacts.core[depsBase] || networkArtifacts.apps[depsBase] if (utils.isUpgradableArtifact(depsImpl)) { const depsVanity = networkSpecs[depsBase]?.vanity || Object.keys(networkArtifacts[domain]).indexOf(depsBase) const depsProxySalt = (depsVanity diff --git a/settings/artifacts.js b/settings/artifacts.js index 47c4a8c4..9f8cae72 100644 --- a/settings/artifacts.js +++ b/settings/artifacts.js @@ -2,7 +2,7 @@ export default { default: { WitnetDeployer: "WitnetDeployer", apps: { - WitPriceFeeds: "WitPriceFeedsUpgradableV3", + WitPriceFeeds: "WitPriceFeedsV3Upgradable", WitPriceFeedsLegacy: "WitPriceFeedsLegacyUpgradable", WitRandomness: "WitRandomnessV3" }, @@ -33,6 +33,11 @@ export default { WitOracleRadonRequestFactory: "WitOracleRadonRequestFactoryUpgradableConfluxCore", }, }, + "ethereum:sepolia": { + apps: { + WitPriceFeedsLegacy: "WitPriceFeedsLegacyUpgradableBypass", + } + }, mantle: { core: { WitOracle: "WitOracleTrustableOvm2" }, }, diff --git a/settings/specs.js b/settings/specs.js index 1ea98fc8..89ac2397 100644 --- a/settings/specs.js +++ b/settings/specs.js @@ -72,12 +72,16 @@ export default { from: "0xF121b71715E71DDeD592F1125a06D4ED06F0694D", vanity: 1865150170, // 0x1111AbA2164AcdC6D291b08DfB374280035E1111 }, + WitPriceFeedsLegacyUpgradableBypass: { + baseDeps: [ + "WitPriceFeeds", + ], + }, WitPriceFeedsV3: { mutables: { types: ["address"], values: ["0xF121b71715E71DDeD592F1125a06D4ED06F0694D"] }, - // vanity: 0, // }, WitRandomnessV2: { vanity: 1060132513, // 0xC0FFEE98AD1434aCbDB894BbB752e138c1006fAB From 4cd5a80cf110e8863935e249a78d113962cc271b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 17:20:33 +0200 Subject: [PATCH 08/10] chore: bypass v2 on ethereum:sepolia --- .../WitPriceFeedsLegacyUpgradableBypass.sol | 31 ++++++++++++++----- migrations/addresses.json | 23 +++++++------- migrations/constructorArgs.json | 23 +++++++------- 3 files changed, 48 insertions(+), 29 deletions(-) diff --git a/contracts/apps/WitPriceFeedsLegacyUpgradableBypass.sol b/contracts/apps/WitPriceFeedsLegacyUpgradableBypass.sol index ee8e8c5c..f7c8b2ff 100644 --- a/contracts/apps/WitPriceFeedsLegacyUpgradableBypass.sol +++ b/contracts/apps/WitPriceFeedsLegacyUpgradableBypass.sol @@ -16,7 +16,12 @@ import {Slices} from "../libs/Slices.sol"; import {Ownable, Ownable2Step} from "../patterns/Ownable2Step.sol"; import {WitnetUpgradableBase} from "../core/WitnetUpgradableBase.sol"; import {WitPriceFeedsLegacyDataLib} from "../data/WitPriceFeedsLegacyDataLib.sol"; -import {WitPriceFeedsLegacy, IWitOracleAppliance} from "../WitPriceFeedsLegacy.sol"; +import { + IERC2362, + IWitOracleAppliance, + IWitPriceFeedsLegacyAdmin, + IWitPriceFeedsLegacySolverFactory +} from "../WitPriceFeedsLegacy.sol"; /// @title WitPriceFeeds: Price Feeds upgradable repository reliant on the Wit/Oracle blockchain. @@ -30,8 +35,8 @@ contract WitPriceFeedsLegacyUpgradableBypass using Slices for string; using Slices for Slices.Slice; - IWitPriceFeeds immutable public surrogate; IWitOracleRadonRegistry immutable public registry; + IWitPriceFeeds immutable public surrogate; struct BypassV2V3 { mapping (IWitPriceFeedsTypes.ID4 => bytes4) v2Ids; @@ -41,6 +46,16 @@ contract WitPriceFeedsLegacyUpgradableBypass function class() public pure returns (string memory) { return type(WitPriceFeedsLegacyUpgradableBypass).name; } + + function specs() public pure returns (bytes4) { + return ( + type(IERC2362).interfaceId + ^ type(IWitOracleAppliance).interfaceId + ^ type(IWitPriceFeedsLegacy).interfaceId + ^ type(IWitPriceFeedsLegacyAdmin).interfaceId + ^ type(IWitPriceFeedsLegacySolverFactory).interfaceId + ); + } constructor( address _surrogate, @@ -54,11 +69,6 @@ contract WitPriceFeedsLegacyUpgradableBypass "io.witnet.proxiable.feeds.price" ) { - // _require( - // _surrogate != address(0) - // && _surrogate.code.length > 0, - // "invalid surrogate" - // ); surrogate = IWitPriceFeeds(_surrogate); registry = IWitOracleRadonRegistry( IWitOracle( @@ -289,6 +299,13 @@ contract WitPriceFeedsLegacyUpgradableBypass return IWitOracleAppliance(address(surrogate)).witOracle(); } + function witOracle() + external view + returns (address) + { + return IWitOracleAppliance(address(surrogate)).witOracle(); + } + // ================================================================================================================ // --- Implements 'IWitPriceFeedsLegacyAdmin' ----------------------------------------------------------------------------- diff --git a/migrations/addresses.json b/migrations/addresses.json index 61e490f3..23a663a7 100644 --- a/migrations/addresses.json +++ b/migrations/addresses.json @@ -82,7 +82,7 @@ }, "celo:sepolia": { "apps": { - "WitPriceFeedsUpgradableV3": "0x5484018D12F7d726df439Ae66B72b9BD0e143E6d" + "WitPriceFeedsV3Upgradable": "0x5484018D12F7d726df439Ae66B72b9BD0e143E6d" }, "core": { "WitOracleRadonRegistryUpgradableDefault": "0x6e5Fe5e728139E44B07618C0feDb6ECdF619289B", @@ -202,22 +202,23 @@ }, "ethereum:sepolia": { "libs": { - "WitOracleDataLib": "0x47ddB2e37A9f352a6dC2c4fEa348E272fd69d7E4", - "WitOracleRadonEncodingLib": "0xFf66F442a1F9449579B181b9D7e0A90022275235", - "WitOracleResultStatusLib": "0xc1D68961298c5F72c672A1519A42Edd1a9598c5c", - "WitPriceFeedsLegacyDataLib": "0x9e1c82ab0809A4996C36ef3dc646B07089F0B903", - "WitPriceFeedsDataLib": "0x9C3b7240ed85b3B88952D1e1d4DD108F85756E8d" + "WitOracleDataLib": "0xfC62b6B0ec3eCF1Fa031B31b468be51E025a36f1", + "WitOracleRadonEncodingLib": "0x12143b6c8E483c9ED438AB934c476432c684cF0F", + "WitOracleResultStatusLib": "0xd5Ef8E34a8e459110373eF2f8f141893921d367A", + "WitPriceFeedsLegacyDataLib": "0xA7389B84D6ABC46b40e88aAD2bbDAf9921649E9E", + "WitPriceFeedsDataLib": "0x58e5A7dbc8001d9400556163B02f08556ed9D2A2" }, "core": { - "WitOracleTrustableDefault": "0x1C3E70e1dC654A2c62f2b2cEBc1E4A461c6AF231", - "WitOracleRadonRegistryUpgradableDefault": "0xE57814c74bb2419d23230DdB7573c7ab4f4d81B8", + "WitOracleTrustableDefault": "0x329f2A734fF246215922DB1dD6a7061Bc91D400E", + "WitOracleRadonRegistryUpgradableDefault": "0x471c2b44f96Ab95B7688FAaD6fC081f6f464cd93", "WitOracleRadonRequestFactoryModalsDefault": "0xD28237c5d7C8C386377A13e6661642294657F35e", "WitOracleRadonRequestFactoryTemplatesDefault": "0x300c8ccc9526495BB7e5911105f0663Cb4c3a137", - "WitOracleRadonRequestFactoryUpgradableDefault": "0xFf8c37Aa98736341bf392e867214661f4fdd0f02" + "WitOracleRadonRequestFactoryUpgradableDefault": "0x622400544d827043B9B064f29305f129C8c7ABA6" }, "apps": { - "WitPriceFeedsLegacyUpgradable": "0x7c0e1686E88238e07cCda502320058480341Dc83", - "WitPriceFeedsUpgradableV3": "0xA4b96ef00244a99661851594Bd672B5D343c2Da4" + "WitPriceFeedsLegacyUpgradable": "0xb8776103adBfe48366E4B632d9b8cb322E3D524F", + "WitPriceFeedsV3Upgradable": "0xaa2A45356198A4B2f2fedABe60492C549EAFbCde", + "WitPriceFeedsLegacyUpgradableBypass": "0x53D8311197aF484aE65A8D81ba2bbE3A388FE779" } }, "gnosis:mainnet": { diff --git a/migrations/constructorArgs.json b/migrations/constructorArgs.json index 70324812..dfe3de75 100644 --- a/migrations/constructorArgs.json +++ b/migrations/constructorArgs.json @@ -65,7 +65,7 @@ "WitOracleRadonRegistryUpgradableDefault": "{\"types\":[\"bytes32\",\"bool\"],\"values\":[\"0x332e302e302d623732326130642d306165633239340000000000000000000000\",true]}", "WitOracleTrustableDefault": "{\"types\":[\"(uint32, uint32, uint32, uint32)\",\"address\",\"bytes32\"],\"values\":[[58282,65273,69546,20000],\"0x000B61Fe075F545fd37767f40391658275900000\",\"0x332e302e302d623732326130642d666361393961640000000000000000000000\"]}", "WitOracleRadonRequestFactoryUpgradableDefault": "{\"types\":[\"address\",\"address\",\"bytes32\",\"bool\"],\"values\":[\"0xffC4147d7b973B1766FB335bC847C7288c4365ff\",\"0xFF5ad05D038fcc04354B2fca1fb657eA345594FF\",\"0x332e302e302d623732326130642d373634376432370000000000000000000000\",true]}", - "WitPriceFeedsUpgradableV3": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e302d623732326130642d623535363662390000000000000000000000\",true]}" + "WitPriceFeedsV3Upgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e302d623732326130642d623535363662390000000000000000000000\",true]}" }, "celo:mainnet": { "WitOracle": "", @@ -131,11 +131,12 @@ "WitPriceFeedsLegacyUpgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x322e322e382d346262313232312d376261626265610000000000000000000000\",true]}" }, "ethereum:sepolia": { - "WitOracleRadonRegistryUpgradableDefault": "{\"types\":[\"bytes32\",\"bool\"],\"values\":[\"0x322e322e382d346262313232312d323134333632630000000000000000000000\",true]}", - "WitOracleRadonRequestFactoryUpgradableDefault": "{\"types\":[\"address\",\"address\",\"bytes32\",\"bool\"],\"values\":[\"0xD28237c5d7C8C386377A13e6661642294657F35e\",\"0x300c8ccc9526495BB7e5911105f0663Cb4c3a137\",\"0x322e322e382d346262313232312d643235663063620000000000000000000000\",true]}", - "WitOracleTrustableDefault": "{\"types\":[\"(uint32, uint32, uint32, uint32)\",\"address\",\"bytes32\"],\"values\":[[58282,65273,69546,20000],\"0x000B61Fe075F545fd37767f40391658275900000\",\"0x322e322e382d346262313232312d326636613035350000000000000000000000\"]}", - "WitPriceFeedsLegacyUpgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x322e322e382d346262313232312d346138613839330000000000000000000000\",true]}", - "WitPriceFeedsUpgradableV3": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x322e322e382d346262313232312d336435333762630000000000000000000000\",true]}", + "WitOracleRadonRegistryUpgradableDefault": "{\"types\":[\"bytes32\",\"bool\"],\"values\":[\"0x332e302e342d333761663634342d313930663539610000000000000000000000\",true]}", + "WitOracleRadonRequestFactoryUpgradableDefault": "{\"types\":[\"address\",\"address\",\"bytes32\",\"bool\"],\"values\":[\"0xD28237c5d7C8C386377A13e6661642294657F35e\",\"0x300c8ccc9526495BB7e5911105f0663Cb4c3a137\",\"0x332e302e342d333761663634342d326665396137610000000000000000000000\",true]}", + "WitOracleTrustableDefault": "{\"types\":[\"(uint32, uint32, uint32, uint32)\",\"address\",\"bytes32\"],\"values\":[[58282,65273,69546,20000],\"0x000B61Fe075F545fd37767f40391658275900000\",\"0x332e302e342d333761663634342d333263336133330000000000000000000000\"]}", + "WitPriceFeedsLegacyUpgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e342d333761663634342d313265613463340000000000000000000000\",true]}", + "WitPriceFeedsLegacyUpgradableBypass": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x3210564CFC8855cAD45D6d963118058fe2B80123\",\"0x332e302e342d653132613030332d326234316666610000000000000000000000\",true]}", + "WitPriceFeedsV3Upgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e342d333761663634342d653264643231650000000000000000000000\",true]}", "WitRandomnessV3": "{\"types\":[\"address\",\"address\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0xF121b71715E71DDeD592F1125a06D4ED06F0694D\"]}" }, "gnosis:mainnet": { @@ -273,11 +274,11 @@ "WitRandomnessV2": "00000000000000000000000077703ae126b971c9946d562f41dd47071da00777000000000000000000000000f121b71715e71dded592f1125a06d4ed06f0694d" }, "ten:testnet": { - "WitOracleRadonRegistryUpgradableDefault": "{\"types\":[\"bytes32\",\"bool\"],\"values\":[\"0x332e302e322d316538353338302d306165633239340000000000000000000000\",true]}", - "WitOracleTrustableObscuro": "{\"types\":[\"(uint32, uint32, uint32, uint32)\",\"address\",\"bytes32\"],\"values\":[[58282,65273,69546,20000],\"0x000B61Fe075F545fd37767f40391658275900000\",\"0x332e302e322d316538353338302d353734656438620000000000000000000000\"]}", - "WitOracleRadonRequestFactoryUpgradableDefault": "{\"types\":[\"address\",\"address\",\"bytes32\",\"bool\"],\"values\":[\"0xffC4147d7b973B1766FB335bC847C7288c4365ff\",\"0xFF5ad05D038fcc04354B2fca1fb657eA345594FF\",\"0x332e302e322d316538353338302d373634376432370000000000000000000000\",true]}", - "WitPriceFeedsUpgradableV3": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e322d316538353338302d623535363662390000000000000000000000\",true]}", - "WitPriceFeedsLegacyUpgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e322d316538353338302d323738363436620000000000000000000000\",true]}" + "WitOracleRadonRegistryUpgradableDefault": "{\"types\":[\"bytes32\",\"bool\"],\"values\":[\"0x332e302e342d333761663634342d666333346161340000000000000000000000\",true]}", + "WitOracleTrustableObscuro": "{\"types\":[\"(uint32, uint32, uint32, uint32)\",\"address\",\"bytes32\"],\"values\":[[58282,65273,69546,20000],\"0x000B61Fe075F545fd37767f40391658275900000\",\"0x332e302e342d333761663634342d643132396437310000000000000000000000\"]}", + "WitOracleRadonRequestFactoryUpgradableDefault": "{\"types\":[\"address\",\"address\",\"bytes32\",\"bool\"],\"values\":[\"0xffC4147d7b973B1766FB335bC847C7288c4365ff\",\"0xFF5ad05D038fcc04354B2fca1fb657eA345594FF\",\"0x332e302e342d333761663634342d326665396137610000000000000000000000\",true]}", + "WitPriceFeedsLegacyUpgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e342d333761663634342d383533636362330000000000000000000000\",true]}", + "WitPriceFeedsV3Upgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e342d333761663634342d313536303765630000000000000000000000\",true]}" }, "ultron:mainnet": { "WitOracle": "", From 75c95b5d7e18582e507b3def3bfa3b1463b3f6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 17:55:31 +0200 Subject: [PATCH 09/10] chore: upgrade ten:testnet --- migrations/addresses.json | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/migrations/addresses.json b/migrations/addresses.json index 23a663a7..1bb669b7 100644 --- a/migrations/addresses.json +++ b/migrations/addresses.json @@ -446,15 +446,20 @@ }, "ten:testnet": { "libs": { - "WitOracleDataLib": "0xf6d52770453166de85B6B6260Cf22196bC460E88", + "WitOracleDataLib": "0x620e20d91C9b0e11ecAE439E7b85138DA2a1003F", "WitOracleRadonEncodingLib": "0xB5447342cA17A40e59d410b340ba412E22e36201", - "WitOracleResultStatusLib": "0xc71A87657b13A370594967A04b4301a3AcEAF007", - "WitPriceFeedsDataLib": "0x705E076F3387cFd59708D8D8508CECe3e1C65C87", - "WitPriceFeedsLegacyDataLib": "0xa45206cC3Ae76630Cc4D47A730590Ff9B6d8Ee54" + "WitOracleResultStatusLib": "0x6bF6F65Ad0859e9Ee869DAD252a29c9daAa27449", + "WitPriceFeedsDataLib": "0xB4f1f8E27799256ec95C5b5A8d2A5722Bd542E69", + "WitPriceFeedsLegacyDataLib": "0xdC101573cB42EB7006Ad6C7E08ce8C91fEAcB62C" }, "apps": { - "WitPriceFeedsLegacyUpgradable": "0x5493D785EcF171B59eF042649c2D71ec62D40D67", - "WitPriceFeedsUpgradableV3": "0xd13c3F2FE72C2A742044699F95be69B9c7b2ad70" + "WitPriceFeedsLegacyUpgradable": "0x34dC777fE9f0128d252349F8130ad48257082eEC", + "WitPriceFeedsV3Upgradable": "0x03577823cFD3dAb66F2ebfCA859C8F7d13fD4C94" + }, + "core": { + "WitOracleRadonRegistryUpgradableDefault": "0xA3996b86449c3b36b4Cc94Faa2885b4FeDe915B1", + "WitOracleTrustableObscuro": "0x0F27730943ab0D48D6E42Dc4D7733F67932c4584", + "WitOracleRadonRequestFactoryUpgradableDefault": "0xAef96881Bc0c8b9bc6418D20422DA2D31bF4f831" } }, "worldchain:mainnet": {}, From d207afdd0827ab61074287f4b5322dea3de15f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20D=C3=ADaz?= Date: Mon, 20 Oct 2025 17:55:45 +0200 Subject: [PATCH 10/10] chore: upgrade celo:sepolia --- migrations/addresses.json | 16 ++++++++-------- migrations/constructorArgs.json | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/migrations/addresses.json b/migrations/addresses.json index 1bb669b7..118ebd82 100644 --- a/migrations/addresses.json +++ b/migrations/addresses.json @@ -82,19 +82,19 @@ }, "celo:sepolia": { "apps": { - "WitPriceFeedsV3Upgradable": "0x5484018D12F7d726df439Ae66B72b9BD0e143E6d" + "WitPriceFeedsV3Upgradable": "0x94b2237BFbc1c0C3cE60E03fBdaF9e23D0dCB441" }, "core": { - "WitOracleRadonRegistryUpgradableDefault": "0x6e5Fe5e728139E44B07618C0feDb6ECdF619289B", - "WitOracleRadonRequestFactoryUpgradableDefault": "0xE435BC47535BE780e0FFF240BC2729c707EB8938", - "WitOracleTrustableDefault": "0x8a3a541296A2e7dfb53bDFf80DbAdA9735B9556B" + "WitOracleRadonRegistryUpgradableDefault": "0x5c6c6eE04B7E9b0a66cB0a7CCE3eDB19a05CD853", + "WitOracleRadonRequestFactoryUpgradableDefault": "0xD8D786D81a0E8Ca10BdF038E16eFd1bCCd701fE5", + "WitOracleTrustableDefault": "0x2027FfcFEE67800AB154B8827A10FEd0a978bBe2" }, "libs": { - "WitOracleDataLib": "0xf6d52770453166de85B6B6260Cf22196bC460E88", + "WitOracleDataLib": "0xA8f0487eaf3640e30F472b815A45a7d4e96f18CB", "WitOracleRadonEncodingLib": "0xB5447342cA17A40e59d410b340ba412E22e36201", - "WitOracleResultStatusLib": "0xc71A87657b13A370594967A04b4301a3AcEAF007", - "WitPriceFeedsDataLib": "0x705E076F3387cFd59708D8D8508CECe3e1C65C87", - "WitPriceFeedsLegacyDataLib": "0xa45206cC3Ae76630Cc4D47A730590Ff9B6d8Ee54" + "WitOracleResultStatusLib": "0x50AA08187D2F648Dd428784AF6489c3F12e942CC", + "WitPriceFeedsDataLib": "0x8D20457d968c937b7cb65be6B8cC766613fBcF28", + "WitPriceFeedsLegacyDataLib": "0xB772f86004330738C1529cC1b0327D24aeF8c370" } }, "celo:mainnet": { diff --git a/migrations/constructorArgs.json b/migrations/constructorArgs.json index dfe3de75..0c413e60 100644 --- a/migrations/constructorArgs.json +++ b/migrations/constructorArgs.json @@ -62,10 +62,10 @@ "WitRandomnessV2": "00000000000000000000000077703ae126b971c9946d562f41dd47071da00777000000000000000000000000f121b71715e71dded592f1125a06d4ed06f0694d" }, "celo:sepolia": { - "WitOracleRadonRegistryUpgradableDefault": "{\"types\":[\"bytes32\",\"bool\"],\"values\":[\"0x332e302e302d623732326130642d306165633239340000000000000000000000\",true]}", - "WitOracleTrustableDefault": "{\"types\":[\"(uint32, uint32, uint32, uint32)\",\"address\",\"bytes32\"],\"values\":[[58282,65273,69546,20000],\"0x000B61Fe075F545fd37767f40391658275900000\",\"0x332e302e302d623732326130642d666361393961640000000000000000000000\"]}", - "WitOracleRadonRequestFactoryUpgradableDefault": "{\"types\":[\"address\",\"address\",\"bytes32\",\"bool\"],\"values\":[\"0xffC4147d7b973B1766FB335bC847C7288c4365ff\",\"0xFF5ad05D038fcc04354B2fca1fb657eA345594FF\",\"0x332e302e302d623732326130642d373634376432370000000000000000000000\",true]}", - "WitPriceFeedsV3Upgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e302d623732326130642d623535363662390000000000000000000000\",true]}" + "WitOracleRadonRegistryUpgradableDefault": "{\"types\":[\"bytes32\",\"bool\"],\"values\":[\"0x332e302e342d346364356138302d666333346161340000000000000000000000\",true]}", + "WitOracleTrustableDefault": "{\"types\":[\"(uint32, uint32, uint32, uint32)\",\"address\",\"bytes32\"],\"values\":[[58282,65273,69546,20000],\"0x000B61Fe075F545fd37767f40391658275900000\",\"0x332e302e342d346364356138302d653936346435300000000000000000000000\"]}", + "WitOracleRadonRequestFactoryUpgradableDefault": "{\"types\":[\"address\",\"address\",\"bytes32\",\"bool\"],\"values\":[\"0xffC4147d7b973B1766FB335bC847C7288c4365ff\",\"0xFF5ad05D038fcc04354B2fca1fb657eA345594FF\",\"0x332e302e342d346364356138302d326665396137610000000000000000000000\",true]}", + "WitPriceFeedsV3Upgradable": "{\"types\":[\"address\",\"bytes32\",\"bool\"],\"values\":[\"0x77703aE126B971c9946d562F41Dd47071dA00777\",\"0x332e302e342d346364356138302d636334623861340000000000000000000000\",true]}" }, "celo:mainnet": { "WitOracle": "",