Skip to content

init - initialize oracle contract

Initializes tables and values for oracle contract to be able to start normal operation.

Technical Behavior

Will initialize oraclestate singleton and feeddata, finalrates and finalaverage tables.

Values for interval, cache_window and ultra_comprehensive_rate_weight provided will be ignored but must be specified in the interface.

final_price_table_size must have 4 elements, each corresponding to a different time unit (seconds, minutes, hours and days).

Action Parameters

FieldsTypeDescription
intervaluint8_tWill be forced to be 1. This means that rates are expected to be pushed to the oracle once every 1 second
cache_windowuint32_tWill be forced to be 60. This means that for each exchange 60 seconds of rates will be stored in a rotating bucket
final_price_table_sizestd::vector<eosio::asset>Cache size for individual oracle time unit levels (first element is for seconds level, second for minutes, third for hours, fourth for days). Capped at 365 per level
final_moving_average_settingsstd::vector<eosio::asset>List of moving averages to register by default. Refer to addma for details
ultra_comprehensive_rate_weightuint32_tUnused, but must be provided

Required Permissions: ultra.oracle

CLI - cleos

bash
cleos push action eosio.oracle init '[1, 60, [240, 360, 240, 365], ["1.0000 MINUTES","60.0000 MINUTES","24.0000 HOURS","7.0000 DAYS","14.0000 DAYS"], 1]' -p ultra.oracle

JavaScript - eosjs

typescript
(async () => {
    const result = await api.transact(
        {
            actions: [
                {
                    account: 'eosio.oracle',
                    name: 'init',
                    authorization: [
                        {
                            actor: 'ultra.oracle',
                            permission: 'active',
                        },
                    ],
                    data: {
                        interval: 1,
                        cache_window: 60,
                        final_price_table_size: [240, 360, 240, 365],
                        final_moving_average_settings: ['1.0000 MINUTES','60.0000 MINUTES','24.0000 HOURS','7.0000 DAYS','14.0000 DAYS'],
                        ultra_comprehensive_rate_weight: 0
                    },
                },
            ],
        },
        {
            blocksBehind: 3,
            expireSeconds: 30,
        }
    );
})();