เดฌเตเดฒเตเดเตเดเตโเดเตเดฏเดฟเตป เดชเดฒเดชเตเดชเตเดดเตเด เดเตเดฐเดฟเดชเตโเดฑเตเดฑเตเดเดฑเตปเดธเดฟเดเดณเตเดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเด เดฌเดจเตเดงเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ DLT เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเตเดเต เดชเตเดฐเดฏเตเดเดคเตเดคเดฟเดจเตเดฑเต เดฎเตเดเดฒเดเตพ เดตเดณเดฐเต เดตเดฟเดถเดพเดฒเดฎเดพเดฃเต. เดฌเตเดฒเตเดเตเดเตโเดเตเดฏเดฟเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดตเดพเดเตเดฆเดพเดจเดฎเดพเดฏ เดฎเตเดเดฒเดเดณเดฟเดฒเตเดจเตเดจเต เดเดฐเต เดธเตเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเดพเดฃเต, เด
เดคเต เดฏเดพเดจเตเดคเตเดฐเดฟเดเดฎเดพเดฏเดฟ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดเดฏเตเด เด
เดคเดฟเตฝ เดชเตเดฐเดตเตเดถเดฟเดเตเด เดเดเตเดทเดฟเดเตพเดเตเดเดฟเดเดฏเดฟเตฝ เดตเดฟเดถเตเดตเดพเดธเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.
เดฑเตเดกเต - เดธเตเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเตเดเตพเดเตเดเตเดณเตเดณ เดเดฐเต เดญเดพเดท
เดธเตเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเตเดเตพเดเตเดเดพเดฏเดฟ เดตเตเดตเตเดธเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดญเดพเดท เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดคเตเดคเดฟเดเตเดเตเดฃเตเดเต - RIDE. เด
เดคเดฟเดจเตเดฑเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเต
เดฑเตเดกเต เดเดฐเดพเตผ เดเดฐเต เดชเตเดฐเดตเดเดจเดฎเดพเดฃเต เดเตเดเดพเดคเต เดเดเตเดเตเดชเตเดเตเดเดพเดฏเดฟ "เดถเดฐเดฟ" เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ "เดคเตเดฑเตเดฑเต" เดจเตฝเดเตเดจเตเดจเต. เด
เดคเดจเตเดธเดฐเดฟเดเตเดเต, เดเดเดชเดพเดเต เดฌเตเดฒเตเดเตเดเตเดเตเดฏเดฟเดจเดฟเตฝ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเต เดจเดฟเดฐเดธเดฟเดเตเดเตเดเดฏเต เดเตเดฏเตเดฏเตเดจเตเดจเต. เดธเตโเดฎเดพเตผเดเตเดเต เดเดฐเดพเตผ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดตเตเดฏเดตเดธเตเดฅเดเดณเตเดเต เดชเตเตผเดคเตเดคเตเดเดฐเดฃเดคเตเดคเดฟเดจเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดเดฑเดชเตเดชเต เดจเตฝเดเตเดจเตเดจเต. RIDE-เดฒเต เดเดฐเต เดเดฐเดพเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเดชเดพเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฟเดฒเดตเดฟเตฝ เดธเดพเดงเตเดฏเดฎเดฒเตเดฒ.
เดเดจเตเดจเต เดฐเดฃเตเดเต เดคเดฐเด เดตเตเดตเตเดธเต เดธเตเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเตเดเดณเตเดฃเตเดเต: เดธเตเดฎเดพเตผเดเตเดเต เด
เดเตเดเตเดฃเตเดเตเดเดณเตเด เดธเตเดฎเดพเตผเดเตเดเต เด
เดธเดฑเตเดฑเตเดเดณเตเด. เดเดฐเต เดธเตเดฎเดพเตผเดเตเดเต เด
เดเตเดเตเดฃเตเดเต เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดเดชเดฏเตเดเตเดคเต เด
เดเตเดเตเดฃเตเดเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดฒเตเดฒเดพ เดเดเดชเดพเดเตเดเดณเตเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เด
เดคเดฟเดจเดพเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดธเตเดฎเดพเตผเดเตเดเต เด
เดเตเดเตเดฃเตเดเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดคเตเดชเตเดฒเตเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:
match tx {
case t: TransferTransaction | MassTransferTransaction => false
case _ => true
}
tx เดเดจเตเดจเดคเต เดเดฐเต เดเตเดฐเดพเตปเดธเตเดซเตผ เดเดเดชเดพเดเดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดพเดคเตเดฐเด เดชเดพเดฑเตเดฑเตเตบ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดคเตเดคเตฝ เดธเดเดตเดฟเดงเดพเดจเด เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดเดชเดพเดเดพเดฃเต. เดเดเดชเดพเดเดฟเดจเตเดฑเต เดคเดฐเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป RIDE-เดฒเต เดชเดพเดฑเตเดฑเตเตบ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดคเตเดคเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดเดฒเตเดฒเดพ เด
เดเตเดเตเดฃเตเดเตเดเดณเตเด เดธเตเดฎเดพเตผเดเตเดเต เด
เดเตเดเตเดฃเตเดเต เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเดพเดจเตเด เดตเตเดฏเดตเดธเตเดฅเดเตพ เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต "if-then-else" เดเตบเดธเตเดเตเดฐเดเตเดฑเตเดฑเตเดเดณเตเด เดฎเดฑเตเดฑเต เดฐเตเดคเดฟเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด. เดเดฐเดพเตผ เดจเดฟเตผเดตเตเดตเดนเดฃเด เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดชเตเดฐเดตเดเดฟเดเตเดเดพเตป เดเดณเตเดชเตเดชเดฎเตเดณเตเดณ, เดคเตเดณเดฟเดฏเดฟเดเตเดเดพเดตเตเดจเตเดจ เดธเดฎเตเดชเตเตผเดฃเตเดฃเดคเดฏเตเด เดธเดเตเดเตเตผเดฃเตเดฃเดคเดฏเตเด (เดเตเดฒเดตเต) เดเดฐเดพเดฑเตเดเตพเดเตเดเต เดเดฃเตเดเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเดพเตป, RIDE-เตฝ เดฒเตเดชเตเดชเตเดเดณเต เดเดฎเตเดชเต เดชเตเดฐเดธเตเดคเดพเดตเดจเดเดณเต เด เดเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
เดตเตเดตเตเดธเต เด เดเตเดเตเดฃเตเดเตเดเดณเตเดเต เดฎเดฑเตเดฑเต เดธเดตเดฟเดถเตเดทเดคเดเดณเดฟเตฝ เดเดฐเต "เดธเตเดฑเตเดฑเตเดฑเตเดฑเต" เดฏเตเดเต เดธเดพเดจเตเดจเดฟเดงเตเดฏเด เดเตพเดชเตเดชเตเดเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต เด เดเตเดเตเดฃเตเดเดฟเดจเตเดฑเต เด เดตเดธเตเดฅ. เดกเดพเดฑเตเดฑเดพ เดเดเดชเดพเดเตเดเตพ (เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป) เดเดชเดฏเตเดเดฟเดเตเดเต เด เดเตเดเตเดฃเตเดเต เดจเดฟเดฒเดฏเดฟเดฒเตเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เด เดจเดจเตเดคเดฎเดพเดฏ เดเตเดกเดฟเดเตพ (เดเต, เดฎเตเดฒเตเดฏเด) เดเดดเตเดคเดพเด. เด เดตเดฟเดตเดฐเดเตเดเตพ REST API เดตเดดเดฟเดฏเตเด เดจเตเดฐเดฟเดเตเดเต เดธเตโเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเดฟเดฒเตเด เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต.
เดเดฐเต เดเดเดชเดพเดเดฟเดฒเตเด เดเดฐเต เดเตเดเตเดเด เดคเตเดณเดฟเดตเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเดพเด, เด เดคเดฟเตฝ เดชเดเตเดเดพเดณเดฟเดฏเตเดเต เดเดชเตเดชเต, เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดเดชเดพเดเดฟเดจเตเดฑเต เดเดกเดฟ เดฎเตเดคเดฒเดพเดฏเดต เดจเตฝเดเดพเด.
RIDE เดตเดดเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต
เดเดฐเต เด เดเตเดเตเดฃเตเดเต เดธเตเดทเตโเดเดฟเดเตเดเตเด, เด เดคเดฟเตฝ เดเดฐเต เดธเตโเดฎเดพเตผเดเตเดเต เดเตเตบเดเตเดฐเดพเดเตโเดฑเตเดฑเต เดเตปเดธเตโเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด, เดเดเดชเดพเดเตเดเตพ เด เดฏเดฏเตโเดเตเดเตเด เดเดจเตเดจเดฟเดต เดเตพเดชเตเดชเตเดเตเดฏเตเดณเตเดณ เดเดฐเต เดชเตเตผเดฃเตเดฃ เดธเตเดเตเดเดฟเดณเดฟเดจเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต REST API-เดฏเตเดฎเดพเดฏเดฟ เดธเดเดตเดฆเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเด เดเดชเดฏเตเดเดฟเดเตเดเดพเด (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, C#, C, Java, JavaScript, Python, Rust, Elixir) . IDE เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดชเตเดคเดฟเดฏ เดฌเดเตเดเตบ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด.
เดธเตเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดเตพ เดตเดฟเดถเดพเดฒเดฎเดพเดฃเต: เดเดฟเดฒ เดตเดฟเดฒเดพเดธเดเตเดเตพ ("เดฌเตเดฒเดพเดเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเต") เดตเดฐเตเดฏเตเดณเตเดณ เดเดเดชเดพเดเตเดเตพ เดจเดฟเดฐเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ dApps เดตเดฐเต.
เดเดชเตเดชเตเตพ เดฌเดฟเดธเดฟเดจเดธเตเดธเดฟเตฝ เดธเตเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเตเดเดณเตเดเต เดเดชเดฏเตเดเดคเตเดคเดฟเดจเตเดฑเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดจเตเดเตเดเดพเด: เดฒเตเดฒเด เดจเดเดคเตเดคเตเดฎเตเดชเตเตพ, เดเตปเดทเตเดฑเตปเดธเต, เดฒเตเดฏเตฝเดฑเตเดฑเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ.
เดฒเตเดฒเดเตเดเตพ
เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดฒเตเดฒเดคเตเดคเดฟเดจเตเดณเตเดณ เดตเตเดฏเดตเดธเตเดฅเดเดณเดฟเดฒเตเดจเตเดจเต เดธเตเดคเดพเดฐเตเดฏเดคเดฏเดพเดฃเต: เดฒเตเดฒเดคเตเดคเดฟเตฝ เดเตเดคเตเดฐเดฟเดฎเด เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเดคเต เด เดธเดพเดงเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดชเดเตเดเดพเดณเดฟเดเตพเดเตเดเต เดเดฑเดชเตเดชเตเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดเดฒเตเดฒเดพ เดชเดจเตเดคเดฏเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเด เด เดต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเด เดธเดฎเดฏเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดพเดฑเตเดฑ เดเดฒเตเดฒเดพ เดชเดเตเดเดพเดณเดฟเดเตพเดเตเดเตเด เดฒเดญเตเดฏเดฎเดพเดเตเดจเตเดจ เดฌเตเดฒเตเดเตเดเตเดเตเดฏเดฟเดจเดฟเดจเต เดจเดจเตเดฆเดฟ เดเดคเต เดจเตเดเดพเดจเดพเดเตเด.
เดตเตเดตเตเดธเต เดฌเตเดฒเตเดเตเดเตเดเตเดฏเดฟเดจเดฟเตฝ, เดฒเตเดฒ เด เดเตเดเตเดฃเตเดเต เด เดตเดธเตเดฅเดฏเดฟเตฝ เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เดตเดดเดฟ เดฌเดฟเดกเตเดกเตเดเตพ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเดพเด.
เดฌเตเดฒเตเดเตเดเต เดจเดฎเตเดชเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดฒเตเดฒเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเดเดญ เดธเดฎเดฏเดตเตเด เด เดตเดธเดพเดจ เดธเดฎเดฏเดตเตเด เดธเดเตเดเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด: เดตเตเดตเตเดธเต เดฌเตเดฒเตเดเตเดเตเดเตเดฏเดฟเดจเดฟเดฒเต เดฌเตเดฒเตเดเตเดเต เดเดจเดฑเตเดทเดจเตเดฑเต เดเดตเตเดคเตเดคเดฟ เดเดเดฆเตเดถเด เดคเตเดฒเตเดฏเดฎเดพเดฃเต 60 เดธเตเดเตเดเดจเตเดฑเตเดเตพ.
1. เดเดเดเตเดฒเตเดทเต เดเดฐเตเดนเดฃ เดตเดฟเดฒ เดฒเตเดฒเด
เดเดฐเต เดเดเดเตเดฒเตเดทเต เดฒเตเดฒเดคเตเดคเดฟเตฝ เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดตเตผ เดชเดฐเดธเตเดชเดฐเด เดฎเดคเตเดธเดฐเดคเตเดคเดฟเตฝ เดฒเตเดฒเด เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดจเตเดคเดฏเดตเตเด เดฎเตเดฎเตเดชเดคเตเดคเตเดคเดฟเดจเตเดเตเดเดพเตพ เดเตเดเตเดคเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เด เดตเดธเดพเดจเดคเตเดคเต เดฌเดฟเดกเดฟเดจเตเดเตเดเดพเตพ เดเตเดเตเดคเตฝ เดฒเตเดฒเดเตเดเดพเตผ เดเดฒเตเดฒเดพเดคเดฟเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เดฒเตเดฒเด เด เดตเดธเดพเดจเดฟเดเตเดเตเด. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดฑเตเดฑเดตเตเด เดเดฏเตผเดจเตเดจ เดฒเตเดฒเดเตเดเดพเดฐเตป เดชเดฑเดเตเด เดคเตเด เดจเตฝเดเดฃเด.
เดเดฐเต เดฒเตเดฒ เดเดชเตเดทเดจเตเด เดเดฃเตเดเต, เด เดคเดฟเตฝ เดตเดฟเตฝเดชเตเดชเดจเดเตเดเดพเดฐเตป เดฒเตเดเตเดเดฟเดจเต เดเตเดฑเดเตเด เดตเดฟเดฒ เดจเดฟเดถเตเดเดฏเดฟเดเตเดเตเดจเตเดจเต, เด เดตเดธเดพเดจ เดตเดฟเดฒ เด เดคเดฟเดจเต เดเดตเดฟเดฏเดฃเด. เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเตเดเตเดเต เดตเดฟเตฝเดเตเดเดชเตเดชเตเดเดพเดคเต เดเดฟเดเดเตเดเตเด.
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดฒเตเดฒเดคเตเดคเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเตเดเด เดธเตเดทเตโเดเดฟเดเตเด เดเดฐเต เด เดเตเดเตเดฃเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดเดเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต. เดฒเตเดฒ เดเดพเดฒเดฏเดณเดตเต 3000 เดฌเตเดฒเตเดเตเดเตเดเดณเดพเดฃเต, เดฒเตเดเตเดเดฟเดจเตเดฑเต เดเดฐเดเดญ เดตเดฟเดฒ 0,001 เดคเดฐเดเดเดเตเดเดณเดพเดฃเต. เดเดฐเต เดชเดเตเดเดพเดณเดฟเดเตเดเต "เดตเดฟเดฒ" เดเดจเตเดจ เดเตเดฏเตเด เด เดตเดฐเตเดเต เดฌเดฟเดกเดฟเดจเตเดฑเต เดฎเตเดฒเตเดฏเดตเตเด เดธเดนเดฟเดคเด เดเดฐเต เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เด เดฏเดเตเดเตเดเตเดฃเตเดเต เดเดฐเต เดฌเดฟเดกเต เดธเตเดฅเดพเดชเดฟเดเตเดเดพเด.
เดชเตเดคเดฟเดฏ เดฌเดฟเดกเตเดกเดฟเดจเตเดฑเต เดตเดฟเดฒ เด เดเตเดฏเตเดเต เดจเดฟเดฒเดตเดฟเดฒเต เดตเดฟเดฒเดฏเตเดเตเดเดพเตพ เดเตเดเตเดคเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด, เดเตเดเดพเดคเต เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดฏเดพเดณเตเดเต เด เดเตเดเตเดฃเตเดเดฟเตฝ เดเตเดฑเดเตเดเดคเต [new_bid + เดเดฎเตเดฎเตเดทเตป] เดเตเดเตเดเดฃเตเดเดณเตเดเตเดเดฟเดฒเตเด เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดฌเดฟเดกเตเดกเดฑเตเดเต เดตเดฟเดฒเดพเดธเด เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเดจเดฟเดฒเต "เด เดฏเดเตเดเตเดจเตเดจเดฏเดพเตพ" เดซเตเตฝเดกเดฟเตฝ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเดฃเด, เดเตเดเดพเดคเต เดจเดฟเดฒเดตเดฟเดฒเต เดฌเดฟเดกเต เดฌเตเดฒเตเดเตเดเดฟเดจเตเดฑเต เดเดฏเดฐเด เดฒเตเดฒ เดเดพเดฒเดฏเดณเดตเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดฏเดฟเดฐเดฟเดเตเดเดฃเด.
เดฒเตเดฒเดคเตเดคเดฟเดจเตเดฑเต เด เดตเดธเดพเดจเดคเตเดคเดฟเตฝ เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดฏเดพเตพ เดเดฑเตเดฑเดตเตเด เดเดฏเตผเดจเตเดจ เดตเดฟเดฒ เดจเดฟเดถเตเดเดฏเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดตเดฟเดฒเดฏเดฟเดฒเตเด เดเดฑเตปเดธเดฟ เดเตเดกเดฟเดฏเดฟเดฒเตเด เด เดจเตเดฌเดจเตเดง เดฒเตเดเตเดเดฟเดจเต เดชเดฃเดฎเดเดฏเตเดเตเดเดพเตป เด เดฏเดพเตพเดเตเดเต เดเดฐเต เดเดเตเดธเตเดเตเดเตเดเต เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เด เดฏเดฏเตเดเตเดเดพเด.
let startHeight = 384120
let finishHeight = startHeight + 3000
let startPrice = 100000
#ะธะทะฒะปะตะบะฐะตะผ ะธะท ััะฐะฝะทะฐะบัะธะธ ะฐะดัะตั ะพัะฟัะฐะฒะธัะตะปั
let this = extract(tx.sender)
let token = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'
match tx {
case d : DataTransaction =>
#ะฟัะพะฒะตััะตะผ, ะทะฐะดะฐะฝะฐ ะปะธ ะฒ ััะตะนัะต ัะตะฝะฐ
let currentPrice = if isDefined(getInteger(this, "price"))
#ะธะทะฒะปะตะบะฐะตะผ ัะตะฝั ะธะท ััะตะนัะฐ
then extract(getInteger(this, "price"))
else startPrice
#ะธะทะฒะปะตะบะฐะตะผ ัะตะฝั ะธะท ััะฐะฝะทะฐะบัะธะธ
let newPrice = extract(getInteger(d.data, "price"))
let priceIsBigger = newPrice > currentPrice
let fee = 700000
let hasMoney = wavesBalance(tx.sender) + fee >= newPrice
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะฒ ัะตะบััะตะน ััะฐะฝะทะฐะบัะธะธ ะดะฒะฐ ะฟะพะปั ะธ ััะพ ะพัะฟัะฐะฒะธัะตะปั ัะพะฒะฟะฐะดะฐะตั ั ัะบะฐะทะฐะฝะฝัะผ ะฒ ััะฐะฝะทะฐะบัะธะธ
let correctFields = size(d.data) == 2 &&
d.sender == addressFromString(extract(getString(d.data,"sender")))
startHeight <= height && height <= finishHeight && priceIsBigger && hasMoney && correctFields
case e : ExchangeTransaction =>
let senderIsWinner = e.sender == addressFromString(extract(getString(this, "sender"))) #ัะฑะตะถะดะฐะตะผัั, ััะพ ะปะพั ะพะฑะผะตะฝะธะฒะฐะตั ัะพั, ะบัะพ ะตะณะพ ะฒัะธะณัะฐะป
let correctAssetPair = e.sellOrder.assetPair.amountAsset == token && ! isDefined(e.sellOrder.assetPair.priceAsset)
let correctAmount = e.amount == 1
let correctPrice = e.price == extract(getInteger(this, "price"))
height > finishHeight && senderIsWinner && correctAssetPair && correctAmount && correctPrice
case _ => false
}
2. เดตเดฟเดฒ เดเตเดฑเดฏเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดกเดเตเดเต เดฒเตเดฒเด
เดเดฐเต เดกเดเตเดเต เดฒเตเดฒเดคเตเดคเดฟเตฝ, เดตเดพเดเตเดเตเดจเตเดจเดฏเดพเตพ เดจเตฝเดเดพเตป เดคเดฏเตเดฏเดพเดฑเตเดณเตเดณเดคเดฟเดจเตเดเตเดเดพเตพ เดเดฏเตผเดจเตเดจ เดตเดฟเดฒเดฏเตเดเตเดเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดงเดพเดฐเดพเดณเด เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดตเดฐเดฟเตฝ เดเดฐเดพเตพ เดจเดฟเดฒเดตเดฟเดฒเต เดตเดฟเดฒเดฏเตเดเตเดเต เดฒเตเดเตเดเต เดตเดพเดเตเดเดพเตป เดธเดฎเตเดฎเดคเดฟเดเตเดเตเดจเตเดจเดคเตเดตเดฐเต เดตเดฟเดฒ เดชเดเดฟเดชเดเดฟเดฏเดพเดฏเดฟ เดเตเดฑเดฏเตเดจเตเดจเต.
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดฎเตเดฎเตเดชเดคเตเดคเต เด เดคเต เดธเตเดฅเดฟเดฐเดพเดเตเดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเตเดชเตเดฒเต เดคเดจเตเดจเต เดกเตเตฝเดฑเตเดฑ เดเตเดฑเดฏเตเดฎเตเดชเตเตพ เดตเดฟเดฒ เดเดเตเดเดตเตเด. เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดฏเดพเตพ เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดเดฐเต เดชเดจเตเดคเดฏเด เดตเตเดเตเดเตเดจเตเดจเดคเต เดเดฆเตเดฏเด เดคเดจเตเดจเตเดฏเดพเดฃเต เดเดจเตเดจเต เด เดเตเดเตเดฃเตเดเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต. เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เดฌเตเดฒเตเดเตเดเตเดเตเดฏเดฟเตป เด เดเดเตเดเดฐเดฟเดเตเดเดฟเดฒเตเดฒ.
let startHeight = 384120
let finishHeight = startHeight + 3000
let startPrice = 100000000
let delta = 100
#ะธะทะฒะปะตะบะฐะตะผ ะธะท ััะฐะฝะทะฐะบัะธะธ ะฐะดัะตั ะพัะฟัะฐะฒะธัะตะปั
let this = extract(tx.sender)
let token = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'
match tx {
case d : DataTransaction =>
let currentPrice = startPrice - delta * (height - startHeight)
#ะธะทะฒะปะตะบะฐะตะผ ะธะท ะฟะพัััะฟะธะฒัะตะน ะดะฐัะฐ-ััะฐะฝะทะฐะบัะธะธ ะฟะพะปะต "price"
let newPrice = extract(getInteger(d.data, "price"))
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะฒ ััะตะนัะต ัะตะบััะตะณะพ ะฐะบะบะฐัะฝัะฐ ะฝะต ัะพะดะตัะถะธััั ะฟะพะปั "sender"
let noBetsBefore = !isDefined(getInteger(this, "sender"))
let fee = 700000
let hasMoney = wavesBalance(tx.sender) + fee >= newPrice
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะฒ ัะตะบััะตะน ััะฐะฝะทะฐะบัะธะธ ัะพะปัะบะพ ะดะฒะฐ ะฟะพะปั
let correctFields = size(d.data) == 2 && newPrice == currentPrice && d.sender == addressFromString(extract(getString(d.data, "sender")))
startHeight <= height && height <= finishHeight && noBetsBefore && hasMoney && correctFields
case e : ExchangeTransaction =>
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะพัะฟัะฐะฒะธัะตะปั ัะตะบััะตะน ััะฐะฝะทะฐะบัะธะธ ัะบะฐะทะฐะฝ ะฒ ััะตะนัะต ะฐะบะบะฐัะฝัะฐ ะฟะพ ะบะปััั sender
let senderIsWinner = e.sender == addressFromString(extract(getString(this, "sender")))
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะฐmount ะฐััะตัะฐ ัะบะฐะทะฐะฝ ะบะพััะตะบัะฝะพ, ะธ ััะพ ะฟัะฐะนั-ะฐััะตั - waves
let correctAssetPair = e.sellOrder.assetPair.amountAsset == token && ! isDefined(e.sellOrder.assetPair.priceAsset)
let correctAmount = e.amount == 1
let correctPrice = e.price == extract(getInteger(this, "price"))
height > finishHeight && senderIsWinner && correctAssetPair && correctAmount && correctPrice
case _ => false
}
3. เดฒเตเดฒเด "เดเตพ-เดชเต"
"เดเตพ-เดชเต" เดเดจเตเดจเดคเต เดเดฐเต เดฒเตเดฒเดฎเดพเดฃเต, เด เดคเดฟเตฝ เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดตเดฐเตเดฒเตเดฒเดพเด เดฌเดฟเดกเต เด เดเดฏเตโเดเตเดเตเดจเตเดจเต, เดเดฐเตเดเตเดเต เดจเดฑเตเดเตเดเตเดเตเดคเตเดคเดพเดฒเตเด. เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดเตเดเดพเดณเดฟเดฏเตเด เดเดฐเต เดฌเดฟเดกเต เดจเตฝเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดชเดฐเดฎเดพเดตเดงเดฟ เดฌเดฟเดกเต เดจเดเดคเตเดคเตเดจเตเดจ เดชเดเตเดเดพเดณเดฟ เดจเดฑเตเดเตเดเตเดเตเดชเตเดชเต เดจเตเดเตเดจเตเดจเต.
เดเดเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดเดฐเต เดฒเตเดฒเดคเตเดคเดฟเตฝ เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดฏเดพเดณเตเด (เดเต, เดฎเตเดฒเตเดฏเด)* = (โเดตเดฟเดเดฏเดฟโ, เดตเดฟเดฒเดพเดธเด), (โเดตเดฟเดฒโ, เดตเดฟเดฒ) เดเดชเดฏเตเดเดฟเดเตเดเต เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เดตเดดเดฟ เดเดฐเต เดฌเดฟเดกเต เดธเตเดฅเดพเดชเดฟเดเตเดเตเดจเตเดจเต. เด เดชเดเตเดเดพเดณเดฟเดเตเดเต เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดเดชเตเดชเดฟเดเตเด เดเดฐเต เดเตเดฐเดพเตปเดธเตเดซเตผ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เดเดฃเตเดเตเดเตเดเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต เด เดคเตเดคเดฐเด เดเดฐเต เดกเดพเดฑเตเดฑเดพ เดเดเดชเดพเดเดฟเดจเต เด เดเดเตเดเดพเดฐเด เดฒเดญเดฟเดเตเดเต, เดเตเดเดพเดคเต เด เดตเดจเตเดฑเต เดฌเดฟเดกเต เดฎเตเดฎเตเดชเดคเตเดคเต เดเดฒเตเดฒเดพเดคเตเดคเตเดเตเดเดพเดณเตเด เดเดฏเตผเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเดเตเดเตเด. เด เดตเดธเดพเดจเด เดเดฏเดฐเด เดเดคเตเดคเตเดจเตเดจเดคเตเดตเดฐเต เดฒเตเดฒเด เดคเตเดเดฐเตเด.
let startHeight = 1000
let endHeight = 2000
let this = extract(tx.sender)
let token = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'
match tx {
case d: DataTransaction =>
#ะธะทะฒะปะตะบะฐะตะผ ะธะท ะฟะพัััะฟะธะฒัะตะน ะดะฐัะฐ-ััะฐะฝะทะฐะบัะธะธ ะฟะพะปะต "price"
let newPrice = extract(getInteger(d.data, "price"))
#ะธะทะฒะปะตะบะฐะตะผ ะธะท ะฟัััะพะฒ ััะฐะฝะทะฐะบัะธะธ ะฟัะฑะปะธัะฝัะน ะบะปัั ะฐะบะบะฐัะฝัะฐ
let pk = d.proofs[1]
let address = addressFromPublicKey(pk)
#ะธะทะฒะปะตะบะฐะตะผ ััะฐะฝะทะฐะบัะธั ะดะพะบะฐะทะฐัะตะปัััะฒะพ ะธะท ะฟัััะพะฒ ะฟะพัััะฟะธะฒัะตะน ะดะฐัะฐ ััะฐะฝะทะฐะบัะธะธ
let proofTx = extract(transactionById(d.proofs[2]))
height > startHeight && height < endHeight
&& size(d.data) == 2
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะฐะดัะตั ะฟะพะฑะตะดะธัะตะปั, ะธะทะฒะปะตัะตะฝะฝัะน ะธะท ัะตะบััะตะน ััะฐะฝะทะฐะบัะธะธ, ัะพะฒะฟะฐะดะฐะตั ั ะฐะดัะตัะพะผ, ะธะทะฒะปะตัะตะฝะฝัะผ ะธะท ะฟัััะพะฒ
&& extract(getString(d.data, "winner")) == toBase58String(address.bytes)
&& newPrice > extract(getInteger(this, "price"))
#ะฟัะพะฒะตััะตะผ, ััะพ ััะฐะฝะทะฐะบัะธั ะฟะพะดะฟะธัะฐะฝะฐ
&& sigVerify(d.bodyBytes, d.proofs[0], d.proofs[1])
#ะฟัะพะฒะตััะตะผ ะบะพััะตะบัะฝะพััั ััะฐะฝะทะฐะบัะธะธ, ัะบะฐะทะฐะฝะฝะพะน ะฒ ะฟัััะฐั
&& match proofTx {
case tr : TransferTransaction =>
tr.sender == address &&
tr.amount == newPrice
case _ => false
}
case t: TransferTransaction =>
sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
|| (
height > endHeight
&& extract(getString(this, "winner")) == toBase58String((addressFromRecipient(t.recipient)).bytes)
&& t.assetId == token
&& t.amount == 1
)
case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
}
เดเตปเดทเตเดฑเตปเดธเต / เดเตเดฐเตเดกเต เดซเดฃเตเดเดฟเดเดเต
เดธเดพเดฎเตเดชเดคเตเดคเดฟเด เดจเดทเตเดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดเดธเตเดคเดฟเดเตพ เดเตปเดทเตเดตเตผ เดเตเดฏเตเดฏเตเดฃเตเด เดธเดพเดนเดเดฐเตเดฏเด เดจเดฎเตเดเตเดเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดเตเดเตเดเดฃเดฟเดจเตเดฑเต เดฎเตเดฒเตเดฏเด เดเตเดฑเดฏเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เด เดเตเดเตเดเดฃเตเดเตพเดเตเดเดพเดฏเดฟ เด เดเดเตเด เดฎเตเดดเตเดตเตป เดคเตเดเดฏเตเด เดคเดฟเดฐเดฟเดเต เดฒเดญเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเดฐเต เดเตเดฏเดพเดฐเดจเตเดฑเดฟ เดเดตเดถเตเดฏเดฎเดพเดฃเต, เดเตเดเดพเดคเต เดจเตเดฏเดพเดฏเดฎเดพเดฏ เดคเตเด เดเตปเดทเตเดฑเตปเดธเต เดจเตฝเดเดพเตป เดคเดฏเตเดฏเดพเดฑเดพเดฃเต.
เดเดคเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป, "เดเตปเดทเตเดฑเตปเดธเต เดเตเดเตเดเดฃเตเดเตพ" เดจเตฝเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดคเตเดเตผเดจเตเดจเต เดชเตเดณเดฟเดธเดฟ เดนเตเตพเดกเดฑเตเดเต เด เดเตเดเตเดฃเตเดเดฟเตฝ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต, เดเดฟเดฒ เดจเดฟเดฌเดจเตเดงเดจเดเตพ เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจ เดเดเตเดธเตเดเตเดเตเดเต เดเดเดชเดพเดเตเดเตพ เดฎเดพเดคเตเดฐเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเดเตเดเดเตเดเตเดฒเดตเต เดคเดเดฏเดพเตป, เดชเตเดณเดฟเดธเดฟ เดเดเดฎเดฏเตเดเต เด เดเตเดเตเดฃเตเดเดฟเดฒเตเดเตเดเต เดเดฐเต เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เด เดฏเดฏเตโเดเตเดเดพเตป เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดเต เด เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต (เดเต, เดฎเตเดฒเตเดฏเด) = (purchaseTransactionId, sellOrderId) เดเตเดเดพเดคเต เดเดคเดฟเดจเดเด เดเดชเดฏเตเดเดฟเดเตเด เดเดฐเต เดเต เดเดชเดฏเตเดเดฟเดเตเดเต DataTransactions เด เดฏเดเตเดเตเดจเตเดจเดคเต เดจเดฟเดฐเตเดงเดฟเดเตเดเตเดเดฏเตเด เดตเตเดฃเด.
เด เดคเดฟเดจเดพเตฝ, เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดคเตเดณเดฟเดตเตเดเดณเดฟเตฝ เดเตปเดทเตเดฑเตปเดธเต เดเตเดเตเดเตบ เดตเดพเดเตเดเดฒเดฟเดจเตเดฑเต เดเดเดชเดพเดเต เดเดกเดฟ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดเดฑเตปเดธเดฟ เดเตเดกเดฟ เดตเดพเดเตเดเตฝ เดเดเดชเดพเดเดฟเดฒเต เดชเตเดฒเต เดคเดจเตเดจเต เดเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดเตปเดทเตเดฑเตปเดธเดฟเดจเตเดฑเต เดตเดฟเดฒเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเตเดฑเดฏเตโเดเตเดเตเดฎเตเดชเตเตพ เดตเดพเดเตเดเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เดจเดฟเดถเตเดเดฏเดฟเดเตเดเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด เดเตเดฒเดตเตเด.
เดชเดฟเดจเตเดจเตเดเต เดเตปเดทเตเดฑเตปเดธเต เด เดเตเดเตเดฃเตเดเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดเตปเดทเตเดฑเตปเดธเต เดเตเดเตเดเดฃเตเดเตพ เดตเดพเดเตเดเดฟเดฏเดคเดฟเดจเตเดเตเดเดพเตพ เดเตเดฑเดเตเด เดตเดฟเดฒเดฏเตเดเตเดเต เดตเดพเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดจเตเดจเต: เดเตปเดทเตเดฑเตปเดธเต เด เดเตเดเตเดฃเตเดเต เดเดฐเต เดเดเตโเดธเตโเดเตเดเตเดเต เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเดชเดฏเตเดเตเดคเดพเดตเต เดเตผเดกเดฑเดฟเตฝ เดเดชเตเดชเดฟเดเตเดจเตเดจเต (เดเดเดชเดพเดเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟเดฏเดพเตฝ), เดเตปเดทเตเดฑเตปเดธเต เด เดเตเดเตเดฃเตเดเต เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเตผเดกเดฑเตเด เดฎเตเดดเตเดตเตป เดเดเดชเดพเดเตเด เดเดชเตเดชเดฟเดเตเดเต เดฌเตเดฒเตเดเตเดเตเดเตเดฏเดฟเดจเดฟเดฒเตเดเตเดเต เด เดฏเดฏเตเดเตเดเตเดจเตเดจเต.
เดตเดพเดเตเดเตฝ เดเดจเตเดจเตเด เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดจเดฟเดฏเดฎเดเตเดเตพเดเตเดเดจเตเดธเตเดคเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเดฐเต เดเดเตเดธเตเดเตเดเตเดเต เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเดพเดจเตเด เดเดเดชเดพเดเต เดฌเตเดฒเตเดเตเดเตเดเตเดฏเดฟเดจเดฟเดฒเตเดเตเดเต เด เดฏเดฏเตเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด. เดเดคเตเดตเดดเดฟ เดเตปเดทเตเดตเตผ เดเตเดฏเตเดค เดเตเดเตเดเดฃเตเดเตพ เดตเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเตเดฒเดตเดดเดฟเดเตเด เดชเดฃเด เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดคเดฟเดฐเดฟเดเต เดจเตฝเดเดพเดจเดพเดเตเด.
let insuranceToken = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'
#ะธะทะฒะปะตะบะฐะตะผ ะธะท ััะฐะฝะทะฐะบัะธะธ ะฐะดัะตั ะพัะฟัะฐะฒะธัะตะปั
let this = extract(tx.sender)
let freezePeriod = 150000
let insurancePrice = 10000
match tx {
#ัะฑะตะถะดะฐะตะผัั, ััะพ, ะตัะปะธ ะฟะพัััะฟะธะปะฐ ะดะฐัะฐ-ััะฐะฝะทะฐะบัะธั, ัะพ ั ะฝะตะต ัะพะฒะฝะพ ะพะดะฝะพ ะฟะพะปะต ะธ ะฒ ััะตะนัะต ะตัะต ะฝะตั ัะฐะบะพะณะพ ะบะปััะฐ
case d : DataTransaction => size(d.data) == 1 && !isDefined(getBinary(this, d.data[0].key))
case e : ExchangeTransaction =>
#ะตัะปะธ ั ััะฐะฝะทะฐะบัะธะธ ะฝะตั ัะตะดัะผะพะณะพ ะฟัััะฐ, ะฟัะพะฒะตััะตะผ ะบะพััะตะบัะฝะพััั ะฟะพะดะฟะธัะธ
if !isDefined(e.proofs[7]) then
sigVerify(e.bodyBytes, e.proofs[0], e.senderPublicKey)
else
#ะตัะปะธ ั ััะฐะฝะทะฐะบัะธะธ ะตััั ัะตะดัะผะพะน ะฟััั, ะธะทะฒะปะตะบะฐะตะผ ะธะท ะฝะตะณะพ ััะฐะฝะทะฐะบัะธั ะธ ัะทะฝะฐัะผ ะตั ะฒััะพัั
let purchaseTx = transactionById(e.proofs[7])
let purchaseTxHeight = extract(transactionHeightById(e.proofs[7]))
#ะพะฑัะฐะฑะฐััะฒะฐะตะผ ััะฐะฝะทะฐะบัะธั ะธะท ะฟัััะฐ
match purchaseTx {
case purchase : ExchangeTransaction =>
let correctSender = purchase.sender == e.sellOrder.sender
let correctAssetPair = e.sellOrder.assetPair.amountAsset == insuranceToken &&
purchase.sellOrder.assetPair.amountAsset == insuranceToken &&
e.sellOrder.assetPair.priceAsset == purchase.sellOrder.assetPair.priceAsset
let correctPrice = e.price == purchase.price - insurancePrice && e.amount == purchase.amount
let correctHeight = height > purchaseTxHeight + freezePeriod
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะฒ ััะฐะฝะทะฐะบัะธะธ-ะฟัััะต ัะบะฐะทะฐะฝ ะฒะตัะฝัะน ID ัะตะบััะตะน ััะฐะฝะทะฐะบัะธะธ
let correctProof = extract(getBinary(this, toBase58String(purchase.id))) == e.sellOrder.id
correctSender && correctAssetPair && correctPrice && correctHeight && correctProof
case _ => false
}
case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
}
เดเดฐเต เดเตปเดทเตเดฑเตปเดธเต เดเตเดเตเดเตบ เดเดฐเต เดฎเดฟเดเดเตเด เด เดธเดฑเตเดฑเดพเดเตเดเดฟ เดฎเดพเดฑเตเดฑเดพเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฎเตเดจเตเดจเดพเด เดเดเตเดทเดฟเดเตพเดเตเดเต เด เดคเต เดเตเดฎเดพเดฑเตเดจเตเดจเดคเต เดจเดฟเดฐเตเดงเดฟเดเตเดเดพเตป.
เดเตเดฐเตเดกเต เดซเดฃเตเดเดฟเดเดเต เดเตเดเตเดเดฃเตเดเตพเดเตเดเตเด เด เดธเตเดเตเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเด, เดเดตเดถเตเดฏเดฎเดพเดฏ เดคเตเด เดถเตเดเดฐเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดเดฎเดเตพเดเตเดเต เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเด.
เดเดเดชเดพเดเต เดจเดฟเดเตเดคเดฟเดเตพ
เดชเดฒ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดธเตเดคเดฟเดเดณเตเดณเตเดณ เดเดฐเต เดเดเดชเดพเดเดฟเดจเตเด เดจเดฟเดเตเดคเดฟ เดชเดฟเดฐเดฟเดเตเดเตเดฃเตเด เดธเดพเดนเดเดฐเตเดฏเดเตเดเดณเดฟเดฒเตเด เดธเตเดฎเดพเตผเดเตเดเต เดเดฐเดพเดฑเตเดเตพ เดฌเดพเดงเดเดฎเดพเดฃเต. เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดเดฐเต เดชเตเดคเดฟเดฏ เด
เดธเดฑเตเดฑเดฟเดฒเตเดเต เดเดคเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด
1. เดเดเตเดเตพ FeeCoin เดเดทเตเดฏเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เด เดคเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดตเดฟเดฒเดฏเตเดเตเดเต เด เดฏเดฏเตเดเตเดเตเด: 0,01 WAVES = 0,001 FeeCoin.
2. FeeCoin-เดจเตเด เดตเดฟเดจเดฟเดฎเดฏ เดจเดฟเดฐเดเตเดเดฟเดจเตเด เดธเตเดชเตเตบเดธเตผเดทเดฟเดชเตเดชเต เดธเดเตเดเดฎเดพเดเตเดเตเด: 0,001 WAVES = 0,001 FeeCoin.
3. เดธเตโเดฎเดพเตผเดเตเดเต เด เดธเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด:
let feeAssetId = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'
let taxDivisor = 10
match tx {
case t: TransferTransaction =>
t.feeAssetId == feeAssetId && t.fee == t.amount / taxDivisor
case e: ExchangeTransaction | MassTransferTransaction => false
case _ => true
}
เดเดชเตเดชเตเตพ เดเดฐเตเดเตเดเดฟเดฒเตเด N เดธเตเดฎเดพเตผเดเตเดเต เด เดธเดฑเตเดฑเตเดเตพ เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดฏเตเดฎเตเดชเตเดดเตเดฒเตเดฒเดพเด, เด เดตเตผ เดจเดฟเดเตเดเตพเดเตเดเต N/taxDivisor เดคเตเดเดฏเดฟเตฝ FeeCoin เดจเตฝเดเตเด (เดเดคเต เดจเดฟเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต 10 *N/taxDivisor WAVES-เตฝ เดตเดพเดเตเดเดพเด), เดจเดฟเดเตเดเตพ เดฎเตเดจเตผ N/taxDivisor WAVES เดจเตฝเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดจเดฟเดเตเดเดณเตเดเต เดฒเดพเดญเด (เดจเดฟเดเตเดคเดฟ) 9*N / taxDivisor WAVES เดเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดธเตโเดฎเดพเตผเดเตเดเต เด เดธเดฑเตเดฑเต เดธเตโเดเตเดฐเดฟเดชเตโเดฑเตเดฑเตเด เดฎเดพเดธเตโเดเตเดฐเดพเตปเดธเตโเดซเตผ เดเตเดฐเดพเตปเดธเดพเดเตเดทเดจเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดคเดฟ เดเตเดฎเดคเตเดคเดพเดจเตเด เดเดดเดฟเดฏเตเด:
let taxDivisor = 10
match tx {
case t : MassTransferTransaction =>
let twoTransfers = size(t.transfers) == 2
let issuerIsRecipient = t.transfers[0].recipient == addressFromString("3MgkTXzD72BTfYpd9UW42wdqTVg8HqnXEfc")
let taxesPaid = t.transfers[0].amount >= t.transfers[1].amount / taxDivisor
twoTransfers && issuerIsRecipient && taxesPaid
case _ => false
}
เดเตเดฏเดพเดทเตเดฌเดพเดเตเดเต, เดฒเตเดฏเตฝเดฑเตเดฑเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ
เดเดฐเต เดเตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเดจเต เดธเตเดตเดจเดคเตเดคเดฟเดจเต เดตเตเดฃเตเดเดฟ เดเตเดฒเดตเดดเดฟเดเตเด เดคเตเดเดฏเตเดเต เดเดฐเต เดญเดพเดเด เดตเดพเดเตเดเตเดจเตเดจเดฏเดพเตพเดเตเดเต เดคเดฟเดฐเดฟเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดคเดฐเด เดฒเตเดฏเตฝเดฑเตเดฑเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเดพเดฃเต เดเตเดฏเดพเดทเตเดฌเดพเดเตเดเต.
เดเดฐเต เดธเตโเดฎเดพเตผเดเตเดเต เด เดเตเดเตเดฃเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เด เดเตเดธเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดฎเตเดชเตเตพ, เดเตปเดทเตเดฑเตปเดธเต เดเตเดธเดฟเตฝ เดจเดฎเตเดฎเตพ เดเตเดฏเตโเดคเดคเตเดชเตเดฒเต เดคเดจเตเดจเต เดคเตเดณเดฟเดตเตเดเดณเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดฃเด. เดเดฐเดเตเดเดเตเดเตเดฒเดตเต เดคเดเดฏเดพเตป, เดเตเดฏเดพเดทเตเดฌเดพเดเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดเดชเดฏเตเดเตเดคเดพเดตเต (เดเต, เดฎเตเดฒเตเดฏเด) = (purchaseTransactionId, cashbackTransactionId) เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เด เดฏเดฏเตเดเตเดเดฃเด.
เดกเดพเดฑเตเดฑเดพ เดเตเดฐเดพเตปเดธเดพเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดเตเดเตพ เดจเดฟเดฐเตเดงเดฟเดเตเดเตเดเดฏเตเด เดตเตเดฃเด. เดเตเดฏเดพเดทเตเดฌเดพเดเตเดเต เดกเดฟเดตเดฟเดธเตผ - เดฏเตเดฃเดฟเดฑเตเดฑเต เดเตเดฏเดพเดทเตเดฌเดพเดเตเดเต เดทเตเดฏเตผ เดเตเดฃเตเดเต เดนเดฐเดฟเดเตเดเตเดจเตเดจเต. เด. เดเตเดฏเดพเดทเตเดฌเดพเดเตเดเต เดทเตเดฏเตผ 0.1 เดเดฃเตเดเตเดเดฟเตฝ, เดเตเดฏเดพเดทเตเดฌเดพเดเตเดเต เดกเดฟเดตเดฟเดธเตผ 1 / 0.1 = 10.
let cashbackToken = base58'8jfD2JBLe23XtCCSQoTx5eAW5QCU6Mbxi3r78aNQLcNf'
#ะธะทะฒะปะตะบะฐะตะผ ะธะท ััะฐะฝะทะฐะบัะธะธ ะฐะดัะตั ะพัะฟัะฐะฒะธัะตะปั
let this = extract(tx.sender)
let cashbackDivisor = 10
match tx {
#ัะฑะตะถะดะฐะตะผัั, ััะพ, ะตัะปะธ ะฟะพัััะฟะธะปะฐ ะดะฐัะฐ-ััะฐะฝะทะฐะบัะธั, ัะพ ั ะฝะตะต ัะพะฒะฝะพ ะพะดะฝะพ ะฟะพะปะต ะธ ะฒ ััะตะนัะต ะตัะต ะฝะตั ัะฐะบะพะณะพ ะบะปััะฐ
case d : DataTransaction => size(d.data) == 1 && !isDefined(getBinary(this, d.data[0].key))
case e : TransferTransaction =>
#ะตัะปะธ ั ััะฐะฝะทะฐะบัะธะธ ะฝะตั ัะตะดัะผะพะณะพ ะฟัััะฐ, ะฟัะพะฒะตััะตะผ ะบะพััะตะบัะฝะพััั ะฟะพะดะฟะธัะธ
if !isDefined(e.proofs[7]) then
sigVerify(e.bodyBytes, e.proofs[0], e.senderPublicKey)
else
#ะตัะปะธ ั ััะฐะฝะทะฐะบัะธะธ ะตััั ัะตะดัะผะพะน ะฟััั, ะธะทะฒะปะตะบะฐะตะผ ะธะท ะฝะตะณะพ ััะฐะฝะทะฐะบัะธั ะธ ัะทะฝะฐัะผ ะตั ะฒััะพัั
let purchaseTx = transactionById(e.proofs[7])
let purchaseTxHeight = extract(transactionHeightById(e.proofs[7]))
#ะพะฑัะฐะฑะฐััะฒะฐะตะผ ััะฐะฝะทะฐะบัะธั ะธะท ะฟัััะฐ
match purchaseTx {
case purchase : TransferTransaction =>
let correctSender = purchase.sender == e.sender
let correctAsset = e.assetId == cashbackToken
let correctPrice = e.amount == purchase.amount / cashbackDivisor
#ัะฑะตะถะดะฐะตะผัั, ััะพ ะฒ ััะฐะฝะทะฐะบัะธะธ-ะฟัััะต ัะบะฐะทะฐะฝ ะฒะตัะฝัะน ID ัะตะบััะตะน ััะฐะฝะทะฐะบัะธะธ
let correctProof = extract(getBinary(this, toBase58String(purchase.id))) == e.id
correctSender && correctAsset && correctPrice && correctProof
case _ => false
}
case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
}
เดเดฑเตเดฑเตเดฎเดฟเดเต เดธเตเดตเดพเดชเตเดชเต
เดเดฐเต เดเดเตเดธเตเดเตเดเตเดเดฟเดจเตเดฑเต เดธเดนเดพเดฏเดฎเดฟเดฒเตเดฒเดพเดคเต เดเดธเตเดคเดฟเดเตพ เดเตเดฎเดพเดฑเดพเตป เดเดฑเตเดฑเตเดฎเดฟเดเต เดธเตเดตเดพเดชเตเดชเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดฑเตเดฑเตเดฎเดฟเดเต เดธเตเดตเดพเดชเตเดชเต เดเดชเดฏเตเดเดฟเดเตเดเต, เดเดเดชเดพเดเดฟเดฒเต เดฐเดฃเตเดเต เดชเดเตเดเดพเดณเดฟเดเดณเตเด เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เด เดคเต เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดเดเดชเดพเดเดฟเดจเต เด เดจเตเดตเดฆเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดตเดฐเดฟเตฝ เดเดฐเดพเดณเตเดเตเดเดฟเดฒเตเด เดเดเดชเดพเดเดฟเดจเตเดฑเต เดถเดฐเดฟเดฏเดพเดฏ เดธเตเดฅเดฟเดฐเตเดเดฐเดฃเด เดจเตฝเดเดฟเดฏเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดเดชเดพเดเต เดฑเดฆเตเดฆเดพเดเตเดเตเดเดฏเตเด เดเตเดฎเดพเดฑเตเดฑเด เดธเดเดญเดตเดฟเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดเดเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเตเดฎเดพเตผเดเตเดเต เด เดเตเดเตเดฃเตเดเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเด:
let Bob = Address(base58'3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8')
let Alice = Address(base58'3PNX6XwMeEXaaP1rf5MCk8weYeF7z2vJZBg')
let beforeHeight = 100000
let secret = base58'BN6RTYGWcwektQfSFzH8raYo9awaLgQ7pLyWLQY4S4F5'
match tx {
case t: TransferTransaction =>
let txToBob = t.recipient == Bob && sha256(t.proofs[0]) == secret && 20 + beforeHeight >= height
let backToAliceAfterHeight = height >= 21 + beforeHeight && t.recipient == Alice
txToBob || backToAliceAfterHeight
case _ => false
}
เดเดชเตโเดทเดจเตเดเตพ, เดซเตเดฏเตเดเตเดเดฑเตเดเตพ, เดฌเดฟเดฒเตเดฒเตเดเตพ เดคเตเดเดเตเดเดฟเดฏ เดธเดพเดฎเตเดชเดคเตเดคเดฟเด เดเดชเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดธเตเดฎเดพเตผเดเตเดเต เด เดเตเดเตเดฃเตเดเตเดเดณเตเดเต เดเดชเดฏเตเดเด เด เดเตเดคเตเดค เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดจเตเดเตเดเดพเด.
เด เดตเดฒเดเดฌเด: www.habr.com