Source: https://docs.wavesplatform.com/en/waves-oracles/about-waves-oracles.html
Task: рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдбреЗрдЯрд╛ рдСрд░реЗрдХрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдСрд░реЗрдХрд▓ рдХреЗ рдЦрд╛рддреЗ рд╕реЗ рдЕрдкрдирд╛ рдХреА рд╡реИрд▓реНрдпреВ рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ ORACLE рд╕рд┐рд░реНрдл рдПрдХ рдЦрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдорд╛рдирдХреАрдХреГрдд рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреНрдп dApps рдпрд╛ рд╕реНрдорд╛рд░реНрдЯ рдПрд╕реЗрдЯреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
Oracles рд╕реНрдЯреИрдВрдбрд░реНрдбреЫреЗрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдк рдЗрд╕ рдУрд░рдХрд▓реНрд╕ рдЕрдХрд╛рдЙрдВрдЯ рдХреЗ рдКрдкрд░ рдФрд░ рдЕрдзрд┐рдХ рд▓реЙрдЬрд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ тАж рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рдЗрд╕реЗ рдХреБрдЫ рд▓реЙрдЬрд┐рдХ рдХреЗ рд╕рд╛рде dApp рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдЙрдирдХреЗ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдХреВрдкрди рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛? рдЧреНрд░рд╛рд╣рдХ рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╡реЗ рдХреБрдЫ тАЬverifierтАЭ-oracle рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬреЗрдВрдЧреЗред
рдпрд╣ рдУрд░рдХрд▓реНрд╕ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ VERIFIED рдпрд╛ BLACKLISTED рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдорд╛рд░рд╛ рдХреВрдкрди рдмрд╛рдЬрд╝рд╛рд░ BLACKLISTED рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдирдП рдЖрдЗрдЯрдо рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрдЧрд╛ред
Oracle-Verifier
CouponBazaar рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
Hint: Oracle-Verifier рдЕрднреА рддрдХ рдЦрд╛рддрд╛ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
Oracle-Verifier
CouponBazaar рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рд╕реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХреБрдЫ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП Oracle-Verifier рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ VERIFIED рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВред рдПрдХ рд╡реЗрд░рд┐реЮрд┐рдПрдб рдПрдХрд╛рдЙрдВрдЯ рд╕реЗ рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рд╣рдо рдПрдХ рд╡рд┐рдХреЗрдВрджреНрд░реАрдХреГрдд Web3 рдХреВрдкрди рдмрд╛рдЬрд╝рд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ тАФ тАЬрдХреВрдкрди рдмрд╛рдЬрд╝рд╛рд░тАЭред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЫреВрдЯ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдмрд╛рдЬрд╝рд╛рд░ рдореЗрдВ рдереЛрдбрд╝реА рдХреАрдордд рд╕реЗ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрдЗрдЯрдо / рдХреВрдкрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рд╣реИред рдмреНрд▓реЙрдХрдЪреИрди рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рдХреА-рд╡реИрд▓реНрдпреВ рдбреАрдПрдк рдЕрдХрд╛рдЙрдВрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреНрд▓реЙрдХрдЪреЗрди (рдЕрдХрд╛рдЙрдВрдЯ рдбреЗрдЯрд╛) рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдЖрдЗрдЯрдо рдРрд░реЗ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ @waves-transaction рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдмреНрд▓реЙрдХрдЪреЗрди рдиреЛрдб рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА API рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВред рдЖрдЗрдП рдиреЛрдб-рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА nodeInteraction рдПрдХ рдХреЛ рджреЗрдЦреЗрдВ:
https://github.com/wavesplatform/waves-transactions/blob/master/src/nodeInteraction.ts
рд╢рд╛рдпрдж, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдмреНрд▓реЙрдХрдЪреЗрди рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ тАЬheightтАЭ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ тАЬрдЬреЗрдиреЗрд╕рд┐рд╕тАЭ рдмреНрд▓реЙрдХ рд╕реЗ рдорд╛рдЗрди рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдЕрдХреНрд╕рд░ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЗ рднреАрддрд░ тАЬрд╕рдордптАЭ рдХреЗ рдорд╛рдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд░рдВрдЯ рдмреНрд▓реЙрдХрдЪреЗрди рд╣рд╛рдЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
export declare const currentHeight: (apiBase: string) => Promise<number>;
рдХрд░рдВрдЯ dApp рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
export declare function accountData(address: string, nodeUrl: string): Promise<Record<string, IDataEntry>>;
рдЖрдИрдбреАрдИ рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдбреАрдПрдк рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:
export declare function accountDataByKey(key: string, address: string, nodeUrl: string): Promise<IDataEntry>;
P.S.: рдпрджрд┐ рдЖрдк JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕реАрдзреЗ Node API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ : https://nodes.wavesplatform.com/api-docs/index.html#!/addresses/getData_1
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдбреАрдПрдк рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (RegEx) рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ:
where
this.nodeUrl = process.env.APP_NODE_URL || 'https://testnodes.wavesnodes.com';
рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдХреБрдВрдЬрд┐рдпреЛрдВ ([ тАЬkey1тАЭ, тАЬkey2тАЭ, тАж, тАЬkey3тАЭ ]) рдХреА рд╕реВрдЪреА рд╕реЗ PATTERN рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
/**
* Get node data by multiple keys
* {string[]} keys
* {Promise<null|string | number | boolean>}
*/
async nodeFetchKeys(keys) {
const regexpKeys = keys.map(key => _escapeRegExp(key));
const regexp = new RegExp('^(' + regexpKeys.join('|') + ')$');
const data = await this.nodeFetchPattern(regexp); return keys.map(key => data[key] || null);
}
рдХреГрдкрдпрд╛, рдиреЛрдбрдЗрдВрдЯрд░рдиреЗрд╢рди nodeInteraction рдореЙрдбреНрдпреВрд▓ рд╕реЛрд░реНрд╕ рдХреЛрдб рдЦреЛрд▓реЗрдВред рдпрд╣рд╛рдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдбрд╛рд▓реЗрдВ рдЬреЛ рдмреНрд▓реЙрдХрдЪреЗрди рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рди рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдСрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ, рд╣рдордиреЗ рдЬреНрдпрд╛рджрд╛рддрд░ IDE рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реАрдзреЗ SEED рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЧрдП рдереЗред
const accountCustomerSeed = "genuine portion citizens waiting space merry solar above grow task lunar blanket"
Web3 рдореЗрдВ, рдЬреЛ SEEDs рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдЕрдХрд╛рдЙрдВрдЯ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ: рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рдиреНрд╕, рдбреЗрдЯрд╛, рдбрд┐рдЬрд┐рдЯрд▓ рдПрд╕реЗрдЯ, рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ред рддреЛ, рдПрдХ SEED рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЙрдбреНрдпреВрд▓ 1 рдореЗрдВ рдЕрдкрдиреЗ рд╡реЗрдм 3 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреАрдкрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред
рд╡реЗрд╡реНрд╕ рдХреАрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рдиреНрд╕ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
WavesKeeper.signAndPublishTransaction(tx).then((data) => {
// published tx result
}).catch((error) => {
//processing errors
});
рдПрдХ invokeTransaction рдХреЛ тАЬрд╕рд╛рдЗрди рдФрд░ рдкрдмреНрд▓рд┐рд╢тАЭ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрдЪрд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ tx рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛:
let tx = {
type: 16,
data: {
fee: {
assetId: "WAVES",
tokens: "0.005"
},
dApp: "3NBB3iv7YDRsD8xxxxxxV5eTcsfqh3j2mvF",
call:{
function:"additem",
args:[
{type: "string", value: itemId},
{type: "integer", value: 2},
]},
payment: [{tokens: 1, asset: "WAVES"}]
}
{ tokens: 1, assetId: тАЬWAVESтАЭ } or
{ coins: 100000000, assetId: тАЬWAVESтАЭ } or
{ amount: 100000000, assetId: null }
рджреЛрдиреЛрдВ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ, 1 WAVES рдХреЗ рд╕рдорд╛рди рдореВрд▓реНрдп рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдЗрдирд╕рд┐рдВрдХреЛ рдЯреЛрдХрди рдХреЛ рд╡рд╛рдкрд╕ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдХреАрдордд рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рдЯреАрдХ рдЯреЛрдХрди = рд╕рд┐рдХреНрдХреЗ / (10 ** рдкрд░рд┐рд╢реБрджреНрдзрддрд╛) рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рд╣реИрдВред рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдореЗрдВ MoneyLike рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ / MoneyLike, рддреЛ рдпреЛрдЧ рдХреЛ рд╕рд┐рдХреНрдХреЛрдВ рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡реЗрд╡реНрд╕ рдХреАрдкрд░ API рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝реЗрдВ:
https://docs.wavesplatform.com/en/waves-api-and-sdk/waves-keeper-api.html
HTTP/HTTPS (рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдкреГрд╖реНрда рдирд╣реАрдВ: // рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЗрдЬреЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╡реЗрд╡реНрд╕ рдХреАрдкрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде, рд╡реЗрд╡реНрд╕ рдХреАрдкрд░ рдХреА рдЧреНрд▓реЛрдмрд▓ рд╡рд╕реНрддреБрдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:
authpublicStatesignAndPublishCancelOrdersignAndPublishOrdersignAndPublishTransactionsignCancelOrdersignOrdersignTransactionsignRequestsignTransactionPackageonрд╕рднреА рдореЗрдердбреНрд╕ тАЬonтАЭ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрд╕рд┐рдВрдХреНрд░реЛрдиреЛрд╕рд▓реА рд░реВрдк рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреА рд╣реИрдВ рдФрд░ promises рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИрдВред
or
let txCommitSigned = await WavesKeeper.signTransaction(txCommit);let txRevealSigned = await WavesKeeper.signTransaction(txReveal);
рдФрд░ рдлрд┐рд░ рдкрдмреНрд▓рд┐рд╢ рдХрдорд┐рдЯ tx рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ тАЬрд░рд┐рд╡реАрд▓ tx рдХрд░реЗрдВтАЭред рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ тАЬрд░рд┐рд╡реАрд▓ tx рдХрд░реЗрдВтАЭ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдмреНрд▓реЙрдХрдЪреИрди рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдорддрджрд╛рддрд╛ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдмрджреНрдз рдХрджрдореЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗред
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рдпреВрдЖрдИ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдФрд░ рдлреЙрд░реНрдо, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╕рд░реНрд╡рд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдирдП рдЕрдиреБрд░реЛрдз рдмрдирд╛рддрд╛ рд╣реИред
рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд░реНрд╡рд░ JSON рдХреА-рд╡реИрд▓реНрдпреВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИред рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
Web3 рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, Web3 рдРрдк рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП HTML + рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддреЛ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рддреЛ тАЬрд░реАрдбтАЭ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрд░реЛрдз рд╡рд┐рддрд░рд┐рдд рд▓реЗрдЬрд░ тАФ рдмреНрд▓реЙрдХрдЪреЗрди рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдиреЛрдбреНрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреЛрдИ рднреА рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рдУрдкрди рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯреЗрдб рд▓реЗрдЬрд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИред
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖рдг рд╣реИ: рдмреНрд▓реЙрдХрдЪреЗрди рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдирдИ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рди рд╢рдмреНрдж рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╣реИрдВред
рдмреНрд▓реЙрдХрдЪреИрди рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕рднреА рдЕрдкрдбреЗрдЯ рдХреЛ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рди рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП, рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рди рдЖрд░рдВрднрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рд╣реЛрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рд╣реИ тАФ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ + HTML рдХреЛрдб рдХреА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрд░рдирд╛ред
рддреЛ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ, JS + HTML рдХреЛрдб рдФрд░ images, gifs etc. рдЬреИрд╕реА рдПрд╕реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдбреАрдПрдк рдПрдХрд╛рдЙрдВрдЯ рдХреЛ тАЬbackendтАЭ рдкрдХреНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рд╣рдо рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЕрджреНрднреБрдд рдбреАрдПрдк рдХреЗ рд╕рд╛рде рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рджреЗрддреЗ рд╣реИрдВ!
Enjoy Web3!