ETH Price: $4,112.51 (-5.33%)

Transaction Decoder

Block:
23176999 at Aug-19-2025 06:45:47 PM +UTC
Transaction Fee:
0.000032287224705414 ETH $0.13
Gas Used:
46,438 Gas / 0.695275953 Gwei

Emitted Events:

494 DIAOracleV2.OracleUpdate( key=XMW/USD, value=4138743, timestamp=1755629141 )
495 DIAOracleV2.OracleUpdate( key=WILD/USD, value=41112942, timestamp=1755629141 )

Account State Difference:

  Address   Before After State Difference Code
0x1EA2D013...91b62662b
0.749308778062523941 Eth
Nonce: 23717
0.749276490837818527 Eth
Nonce: 23718
0.000032287224705414
(BuilderNet)
136.935335109203378141 Eth136.935337766971553511 Eth0.00000265776817537
0xed6F4747...96727712e

Execution Trace

DIAOracleV2.setMultipleValues( keys=[XMW/USD, WILD/USD], compressedValues=[1408341264117465619089797412885978664541668949, 13990009214843261633938839359615055436789892693] )
setMultipleValues[DIAOracleV2 (ln:23)]
// compiled using solidity 0.8.19

pragma solidity 0.8.19;

contract DIAOracleV2 {
    mapping (string => uint256) public values;
    address oracleUpdater;
    
    event OracleUpdate(string key, uint128 value, uint128 timestamp);
    event UpdaterAddressChange(address newUpdater);
    
    constructor() {
        oracleUpdater = msg.sender;
    }
    
    function setValue(string memory key, uint128 value, uint128 timestamp) public {
        require(msg.sender == oracleUpdater);
        uint256 cValue = (((uint256)(value)) << 128) + timestamp;
        values[key] = cValue;
        emit OracleUpdate(key, value, timestamp);
    }

    function setMultipleValues(string[] memory keys, uint256[] memory compressedValues) public {
        require(msg.sender == oracleUpdater);
        require(keys.length == compressedValues.length);
        
        for (uint128 i = 0; i < keys.length; i++) {
            string memory currentKey = keys[i];
            uint256 currentCvalue = compressedValues[i];
            uint128 value = (uint128)(currentCvalue >> 128);
            uint128 timestamp = (uint128)(currentCvalue % 2**128);

            values[currentKey] = currentCvalue;
            emit OracleUpdate(currentKey, value, timestamp);
        }
    }
    
    function getValue(string memory key) external view returns (uint128, uint128) {
        uint256 cValue = values[key];
        uint128 timestamp = (uint128)(cValue % 2**128);
        uint128 value = (uint128)(cValue >> 128);
        return (value, timestamp);
    }
    
    function updateOracleUpdaterAddress(address newOracleUpdaterAddress) public {
        require(msg.sender == oracleUpdater);
        oracleUpdater = newOracleUpdaterAddress;
        emit UpdaterAddressChange(newOracleUpdaterAddress);
    }
}