Швидкий старт з Oracle
Смарт-контракти, які вимагають зовнішніх даних або подій в режимі реального часу, вимагають довіреної oracle, тобто довіреного смарт-контракту, який надає дані в ланцюжку.
Для чого це корисно?
- Оракул, який надає ціни XTZ / USD, може дозволити користувачам вносити кошти, які негайно конвертуються в будь-який актив в ланцюжку і представляються як вказівку до дії.
- Оракул, який надає дані про погоду, може дозволити укласти договір страхування від цунамі: користувачі купують покриття за контрактом, яке виплачується, коли в їхньому районі з'явиться досить сильне цунамі
- Комбінація різних оракулів може використовуватися для досягнення консенсусу, наприклад, де тільки результати, опубліковані більшістю оракулів, вважаються дійсними.
- Дотримуйтесь інструкцій в налаштуванні клієнта, щоб встановити
tezos-client
і створити тестовий мережевий гаманець - Клонуйте
lorentz-contract-oracle
репозиторій з GitHub і побудуйте білд з вихідного коду, використовуючиstack
.
❯❯❯ lorentz-contract-oracle Oracle --help
Usage: lorentz-contract-oracle Oracle COMMAND
Oracle contract CLI interface
Available options:
-h,--help Show this help text
Available commands:
print Dump the Oracle contract in form of Michelson code
print-timestamped Dump the Timestamped Oracle contract in form of
Michelson code
init Initial storage for the Oracle contract
get-value get value
update-value update value
update-admin update admin
Команда друку приймає єдиний аргумент:
valueType
, тип значення, наданого оракулом.Примітка. Поки проблема №6 в репозиторії не буде виправлена, інструмент CLI видаватиме помилку, якщо
valueType
не є nat
при друку контракту або в timestamped
версії.Наприклад, якщо
nat
значення передані:❯❯❯ lorentz-contract-oracle Oracle print --valueType "nat"
parameter (or (pair %getValue unit
(contract nat))
(or (nat %updateValue)
(address %updateAdmin)));
storage (pair nat
address);
code { CAST (pair (or (pair unit (contract nat)) (or nat address)) (pair nat address));
DUP;
CAR;
DIP { CDR };
IF_LEFT { DUP;
CAR;
DIP { CDR };
DIP { DIP { DUP };
SWAP };
PAIR;
CDR;
CAR;
DIP { AMOUNT };
TRANSFER_TOKENS;
NIL operation;
SWAP;
CONS;
PAIR }
{ IF_LEFT { DIP { DUP;
CAR;
DIP { CDR } };
DIP { DROP;
DUP;
DIP { SENDER;
COMPARE;
EQ;
IF { }
{ PUSH string "only admin may update";
FAILWITH } } };
PAIR;
NIL operation;
PAIR }
{ DIP { DUP;
CAR;
DIP { CDR };
DIP { SENDER;
COMPARE;
EQ;
IF { }
{ PUSH string "only admin may update";
FAILWITH } } };
SWAP;
PAIR;
NIL operation;
PAIR } } };