เชนเซเชฒเซ เชฆเชฐเซเช!
ะ
เชเชพเชฒเซ เชนเชตเซ เชกเชฟเชธเชเชธเซเชฎเซเชฌเชฒเชจเซเช เชฅเซเชกเซเช เชชเชฐเซเชเซเชทเชฃ เชเชฐเซเช
เชธเซเชเซเช 3. dApp เชเชเชพเชเชจเซเชเชจเซเช เชชเชฐเซเชเซเชทเชฃ
เชเชฒเชฟเชธ เชธเชพเชฅเซ เชคเชฎเชจเซ เชเช เชธเชฎเชธเซเชฏเชพเช เชคเชฐเชค เช เชฌเชนเชพเชฐ เชเชตเซ เชเซ? dApp เชเชพเชคเซเช?
เชชเซเชฐเชฅเชฎ:
เชฌเซเชฌ เช เชจเซ เชเซเชชเชฐ เชเชเชธเซเชฎเชฟเช เชฐเซเชคเซ เชจเชฟเชฏเชฎเชฟเชค เชเชชเชฏเซเช เชเชฐเซเชจเซ dApp เชธเชฐเชจเชพเชฎเชพเช เชชเชฐ เชญเชเชกเซเชณ เชฎเซเชเชฒเซ เชถเชเซ เชเซ เชเซเชฐเชพเชจเซเชธเชซเชฐ เชตเซเชฏเชตเชนเชพเชฐเซ เช เชจเซ เชคเซเชฅเซ เชคเซเชฎเชจเซ เชชเชพเชเชพ เชเชเซเชธเซเชธ เชเชฐเชตเชพเชฎเชพเช เชธเชฎเชฐเซเชฅ เชนเชถเซ เชจเชนเซเช.เชฌเซเชเซเช:
เช เชฎเซ เชเชฒเชฟเชธเชจเซ เชฌเซเชฌ เช เชจเซ/เช เชฅเชตเชพ เชเซเชชเชฐเชจเซ เชฎเชเชเซเชฐเซ เชตเชฟเชจเชพ เชญเชเชกเซเชณ เชเชชเชพเชกเชตเชพ เชฎเชพเชเซ เชเซเชเชชเชฃ เชฐเซเชคเซ เชชเซเชฐเชคเชฟเชฌเชเชงเชฟเชค เชเชฐเชคเชพ เชจเชฅเซ. เชเชพเชฐเชฃ เชเซ, เชเชเชพเชธเชตเชพ เชชเชฐ เชงเซเชฏเชพเชจ เชเชชเซ, เชเชฒเชฟเชธเชจเชพ เชคเชฎเชพเชฎ เชตเซเชฏเชตเชนเชพเชฐเซ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชเชพเชฒเซ เชเชฒเชฟเชธ เชชเชฐ เชชเซเชฐเชคเชฟเชฌเชเชง เชฎเซเชเซเชจเซ 2เชเซเชจเซ เช เซเช เชเชฐเซเช เชเซเชฐเชพเชจเซเชธเชซเชฐ เชตเซเชฏเชตเชนเชพเชฐเซ เชเชพเชฒเซ เชธเซเชงเชพเชฐเซเชฒเซ เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเช:
๏ฟผ
เช
เชฎเซ dApp เชเชฒเชฟเชธ เช
เชจเซ เชคเซเชจเชพ เชนเชธเซเชคเชพเชเซเชทเชฐเชฎเชพเชเชฅเซ เชธเชฟเชเซเชเชพ เชชเชพเชเชพ เชเซเชเชเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช. เช
เชฎเชจเซ เชเช เชญเซเชฒ เชฎเชณเซ เชเซ:
เชเชพเชฒเซ เชเชชเชพเชก เชฆเซเชตเชพเชฐเชพ เชเชชเชพเชก เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช:
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"withdraw",args:[{type:"integer", value: 1000000}]}, payment: []}))
เชธเซเชเซเชฐเชฟเชชเซเช เชเชพเชฎ เชเชฐเซ เชเซ เช เชจเซ เช เชฎเซ 2 เชเซ เชฎเซเชฆเซเชฆเซ เชถเซเชงเซ เชเชพเชขเซเชฏเซ!
เชธเซเชเซเช 4. เชฎเชคเชฆเชพเชจ เชธเชพเชฅเซ DAO เชฌเชจเชพเชตเซ
เชเชฎเชจเชธเซเชฌเซ, RIDE เชญเชพเชทเชพ เชนเชเซ เชธเซเชงเซ เชธเชเชเซเชฐเชนเซ (เชถเชฌเซเชฆเชเซเชทเซ, เชชเซเชจเชฐเชพเชตเชฐเซเชคเชเซ, เชฐเซเชกเซเชฏเซเชธเชฐ, เชตเชเซเชฐเซ) เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซ เชเซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เชเชฐเชคเซ เชจเชฅเซ. เชเซ เชเซ, เชซเซเชฒเซเช เชเชฒเซเชเซเชถเชจ เชธเชพเชฅเซเชจเซ เชเซเชเชชเชฃ เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซ เชเซ-เชฎเซเชฒเซเชฏ เช เชฎเซ เชธเซเชเซเชฐเซเชเชเซเชธ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเชฟเชธเซเชเชฎ เชกเชฟเชเชพเชเชจ เชเชฐเซ เชถเชเซเช เชเซเช, เชคเซ เชฎเซเชเชฌ เชเซ เช เชจเซ เชคเซเชจเชพ เชกเชฟเชเซเชฐเชฟเชชเซเชถเชจ เชธเชพเชฅเซ.
เชถเชฌเซเชฆเชฎเชพเชณเชพเช เชเซเชกเชตเชพ เชฎเชพเชเซ เชเซเชฌ เช เชธเชฐเชณ เชเซ; เชธเซเชเซเชฐเชฟเชเชเซเชธเชจเซ เช
เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพ เชฆเซเชตเชพเชฐเชพ เช
เชฒเช เชเชฐเซ เชถเชเชพเชฏ เชเซ.
เชเชพเชฒเซ เชเช เชชเชฐเซเชเซเชทเชฃ เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชธเซเชเซเชฐเชฟเชเชเชจเซ เชเชเชคเซเชฐเชฟเชค เช
เชจเซ เชชเชพเชฐเซเชธ เชเชฐเซเช เช
เชจเซ เชคเชชเชพเชธ เชเชฐเซเช เชเซ เช เชตเซเชฏเชตเชนเชพเชฐเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเชจเซ เชเซเชตเซ เชฐเซเชคเซ เช
เชธเชฐ เชเชฐเซ เชเซ.
เช
เชฎเซ เช เชนเชเซเชเชค เชชเชฐ เชธเชฎเชพเชงเชพเชจ เชเชฐเซเชฏเซเช เชเซ เชเชฒเชฟเชธ เชเซเชฐเชพเชจเซเชธเชซเชฐ เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจ เชชเชฐ เชนเชธเซเชคเชพเชเซเชทเชฐ เชเชฐเซ เชถเชเชคเซ เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เช เชชเซเชฐเชเชพเชฐเชจเซ เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจ เชฎเชพเชเซ @verifier เชฎเชพเช เช เชเซเชทเชฎเชคเชพ เชฌเซเชฒเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชนเชคเซ.
เชเชพเชฒเซ เชถเชฌเซเชฆเชฎเชพเชณเชพเช เชธเชพเชฅเซ เชชเซเชฐเซเชเซเชเชฟเชธ เชเชฐเซเช เช เชจเซ เชชเชเซ เชคเซเชจเซ เชเชเซเชฒเซเช.
เชฐเชพเชเชก เชธเซเชเซเชฐเซเชเชเซเชธ
เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจ เชซเชฐเซเชฅเซ เชถเชเซเชฏ เชเซ, เช
เชฎเซ เชคเชพเชฐ เชธเชพเชฅเซ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฎ เชเชฐเชตเซเช เชคเซ เชเชพเชฃเซเช เชเซเช.
๏ฟผ
เชเชเชเชฆเชฐเซ, เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชเชเชฟเชฒ เชคเชฐเซเช เชฒเชเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชฌเชงเซเช เชเซ DAO dApp.
เชกเซเชเชพ เชตเซเชฏเชตเชนเชพเชฐเซ
เชกเซเชเชพ เชตเซเชฏเชตเชนเชพเชฐเซ:
โเชเซ เชฎเชพเชเซ เชฎเชนเชคเซเชคเชฎ เชเชฆ 100 เช
เชเซเชทเชฐเซ เชเซ, เช
เชจเซ เชเซเชฎเชพเช เชเชเซเชฏเชพเช เช
เชจเซ เช
เชจเซเชฏ เชฌเชฟเชจ-เชเชพเชชเชตเชพ เชฏเซเชเซเชฏ เชชเซเชฐเชคเซเชเซ เชธเชนเชฟเชค เชฎเชจเชธเซเชตเซ เชฏเซเชจเชฟเชเซเชก เชเซเชก เชชเซเชเชจเซเช เชนเซเช เชถเชเซ เชเซ. เชธเซเชเซเชฐเชฟเชเช เชฎเซเชฒเซเชฏเซเชจเซ เชฎเชฐเซเชฏเชพเชฆเชพ 32,768 เชฌเชพเชเชเซเชธ เชเซ เช
เชจเซ เชกเซเชเชพ เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจเชฎเชพเช เชธเชเชญเชตเชฟเชค เชเชจเซเชเซเชฐเซเชเชจเซ เชฎเชนเชคเซเชคเชฎ เชธเชเชเซเชฏเชพ 100 เชเซ. เชเชเชเชฆเชฐเซ, เชกเซเชเชพ เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจเชจเซเช เชฎเชนเชคเซเชคเชฎ เชเชฆ เชฒเชเชญเช 140kb เชเซ โ เชธเชเชฆเชฐเซเชญ เชฎเชพเชเซ, เชถเซเชเซเชธเชชเชฟเชฏเชฐเชจเชพ เชจเชพเชเช 'เชฐเซเชฎเชฟเชฏเซ เช
เชจเซ เชเซเชฒเชฟเชฏเช'เชจเซ เชฒเชเชญเช เชฌเชฐเชพเชฌเชฐ เชฒเชเชฌเชพเช '.
เช
เชฎเซ เชจเซเชเซเชจเซ เชถเชฐเชคเซ เชธเชพเชฅเซ DAO เชฌเชจเชพเชตเซเช เชเซเช:
เชธเซเชเชพเชฐเซเชเช
เชช เชฎเชพเชเซ เชเซเชฒ เชเชฐเซเชจเซ เชญเชเชกเซเชณ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชเชซเชเชกเซเชธ() เชเชเชพเชฎเชพเช เชเชเชพ 2 เชธเชนเชญเชพเชเซเช - DAO เชฐเซเชเชพเชฃเชเชพเชฐเซ - เชจเซ เชเซเชเซ เชเชฐเซเชฐเซ เชเซ. เชชเชพเชเซ เชเซเชเชเซ เชคเซ เชเซเชฒ เชชเชฐ เชฆเชฐเซเชถเชพเชตเซเชฒ เชเซ เชคเซเชเชฒเซเช เชฌเชฐเชพเชฌเชฐ เชถเชเซเชฏ เชฌเชจเชถเซ เชฎเชคเชฆเชพเชจ เชกเซเชเช เชฎเชพเชฒเชฟเชเซ.
เชเชพเชฒเซ 3 เชชเซเชฐเชเชพเชฐเชจเซ เชเชพเชตเซเช เชฌเชจเชพเชตเซเช เช เชจเซ 2 เชจเชตเชพ เชซเชเชเซเชถเชจ เชตเซเช เช เชจเซ เชเซเชเชซเชเชกเชฎเชพเช เชฌเซเชฒเซเชจเซเชธ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฐเซเช เชเชฎเซเชฐเซเช:
xxโฆxx_ia = เชฐเซเชเชพเชฃเชเชพเชฐเซ, เชเชชเชฒเชฌเซเชง เชฌเซเชฒเซเชจเซเชธ (เชฎเชค, เชเชฎเชพ, เชเชชเชพเชก)
xxโฆxx_sv = เชธเซเชเชพเชฐเซเชเช เชชเซเชธ, เชฎเชคเซเชจเซ เชธเชเชเซเชฏเชพ (เชฎเชค เชเชชเซ, เชซเชเชก เชฎเซเชณเชตเซ)
xxโฆxx_sf = เชธเซเชเชพเชฐเซเชเช เชชเซเชธ, เชฎเชคเซเชจเซ เชธเชเชเซเชฏเชพ (เชฎเชค เชเชชเซ, เชซเชเชก เชฎเซเชณเชตเซ)
xxโฆxx = เชเชพเชนเซเชฐ เชธเชฐเชจเชพเชฎเซเช (35 เช เชเซเชทเชฐเซ)
เชเซเชชเชพ เชเชฐเซเชจเซ เชจเซเชเชงเซ เชเซ เชตเซเชเชฎเชพเช เช เชฎเชพเชฐเซ เชเช เชธเชพเชฅเซ เช เชจเซเช เชซเซเชฒเซเชก เช เชชเชกเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชนเชคเซ:
WriteSet([DataEntry(key1, value1), DataEntry(key2, value2)]),
WriteSet เช เชฎเชจเซ เชเชเชจเซ เช เชเชฆเชฐ เชเช เชธเชพเชฅเซ เช เชจเซเช เชฐเซเชเซเชฐเซเชก เชฌเชจเชพเชตเชตเชพ เชฆเซ เชเซ invokeScript เชตเซเชฏเชตเชนเชพเชฐเซ
เชฌเซเชฌ เช
เชจเซ เชเซเชชเชฐ เชซเชฐเซ เชญเชฐเชพเชฏเชพ เชชเชเซ, DAO dApp เชจเชพ เชเซ-เชตเซเชฒเซเชฏเซ เชธเซเชเซเชฐเซเชเชฎเชพเช เช เชเซเชตเซเช เชฆเซเชเชพเชฏ เชเซ ia-เชฅเชพเชชเชฃเซ:
เช
เชฎเชพเชฐเซเช เชกเชฟเชชเซเชเชฟเช เชเชพเชฐเซเชฏ เชฅเซเชกเซเช เชฌเชฆเชฒเชพเชฏเซเช เชเซ:
เชนเชตเซ DAO เชจเซ เชชเซเชฐเชตเซเชคเซเชคเชฟเชเชฎเชพเช เชธเซเชฅเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซเชทเชฃ เชเชตเซ เชเซ - เชฎเชค เชงเชฟเชฐเชพเชฃ เชเชชเชตเชพเชจเชพ เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ.
เชฌเซเชฌ เชจเซเชฒเซเชจเชพ 500000 เชตเซเชตเชฒเซเช เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชฎเชค เชเชชเซ เชเซ:
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"vote",args:[{type:"integer", value: 500000}, {type:"string", value: "3MrXEKJr9nDLNyVZ1d12Mq4jjeUYwxNjMsH"}]}, payment: []}))
เชกเซเชเชพ เชธเซเชเซเชฐเชฎเชพเช เชเชชเชฃเซ เชจเซเชฒเซเชจเชพ เชธเชฐเชจเชพเชฎเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชฌเชงเซ เชเชจเซเชเซเชฐเซเช เชเซเชเช เชเซเช:
เชเซเชชเชฐเซ เชชเชฃ เชจเซเชฒเซ เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชฎเชค เชเชชเซเชฏเซ.
เชเชพเชฒเซ เชซเชเชเซเชถเชจ เชเซเชก เชชเชฐ เชเช เชจเชเชฐ เชเชฐเซเช เชซเชเชก เชฎเซเชณเชตเซ. เชจเซเชฒเซเช DAOเชฎเชพเชเชฅเซ เชญเชเชกเซเชณ เชเชชเชพเชกเชตเชพ เชฎเชพเชเซ เชธเชเซเชทเชฎ เชฅเชตเชพ เชฎเชพเชเซ เชเชเชพเชฎเชพเช เชเชเชพ 2 เชฎเชค เชเชเชคเซเชฐเชฟเชค เชเชฐเชตเชพ เชเชตเชถเซเชฏเช เชเซ.
เชจเซเชฒเซ เชคเซเชจเซ เชธเซเชเชชเชตเชพเชฎเชพเช เชเชตเซเชฒเซ เชฐเชเชฎเชฎเชพเชเชฅเซ เช เชกเชงเซ เชฐเชเชฎ เชเชชเชพเชกเชตเชพ เชเช เชฐเชนเซ เชเซ:
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"getFunds",args:[{type:"integer", value: 500000}]}, payment: []}))
เชคเซเชฃเซ เชธเชซเชณ เชฅเชพเชฏ เชเซ, เชเชเชฒเซ เชเซ, เชกเซเชเช เชเชพเชฎ เชเชฐเซ เชเซ!
เช
เชฎเซ เชญเชพเชทเชพเชฎเชพเช DAO เชฌเชจเชพเชตเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซเช RIDE4DAPPS.
เชจเซเชเซเชจเชพ เชญเชพเชเซเชฎเชพเช เช
เชฎเซ เชเซเชก เชฐเชฟเชซเซเชเซเชเชฐเชฟเชเช เช
เชจเซ เชเซเชธ เชเซเชธเซเชเชฟเชเช เชชเชฐ เชจเชเซเชเชฅเซ เชจเชเชฐ เชจเชพเชเซเชถเซเช.
เชฎเชพเช เชเซเชกเชจเซเช เชธเชเชชเซเชฐเซเชฃ เชธเชเชธเซเชเชฐเชฃ
# In this example multiple accounts can deposit their funds to DAO and safely take them back, no one can interfere with this.
# DAO participants can also vote for particular addresses and let them withdraw invested funds then quorum has reached.
# An inner state is maintained as mapping `address=>waves`.
# https://medium.com/waves-lab/waves-announces-funding-for-ride-for-dapps-developers-f724095fdbe1
# You can try this contract by following commands in the IDE (ide.wavesplatform.com)
# Run commands as listed below
# From account #0:
# deploy()
# From account #1: deposit funds
# broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
# From account #2: deposit funds
# broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
# From account #1: vote for startup
# broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"vote",args:[{type:"integer", value: 500000}, {type:"string", value: "3MrXEKJr9nDLNyVZ1d12Mq4jjeUYwxNjMsH"}]}, payment: []}))
# From account #2: vote for startup
# broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"vote",args:[{type:"integer", value: 500000}, {type:"string", value: "3MrXEKJr9nDLNyVZ1d12Mq4jjeUYwxNjMsH"}]}, payment: []}))
# From account #3: get invested funds
# broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"getFunds",args:[{type:"integer", value: 500000}]}, payment: []}))
{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
@Callable(i)
func deposit() = {
let pmt = extract(i.payment)
if (isDefined(pmt.assetId)) then throw("can hodl waves only at the moment")
else {
let currentKey = toBase58String(i.caller.bytes)
let xxxInvestorBalance = currentKey + "_" + "ib"
let currentAmount = match getInteger(this, xxxInvestorBalance) {
case a:Int => a
case _ => 0
}
let newAmount = currentAmount + pmt.amount
WriteSet([DataEntry(xxxInvestorBalance, newAmount)])
}
}
@Callable(i)
func withdraw(amount: Int) = {
let currentKey = toBase58String(i.caller.bytes)
let xxxInvestorBalance = currentKey + "_" + "ib"
let currentAmount = match getInteger(this, xxxInvestorBalance) {
case a:Int => a
case _ => 0
}
let newAmount = currentAmount - amount
if (amount < 0)
then throw("Can't withdraw negative amount")
else if (newAmount < 0)
then throw("Not enough balance")
else ScriptResult(
WriteSet([DataEntry(xxxInvestorBalance, newAmount)]),
TransferSet([ScriptTransfer(i.caller, amount, unit)])
)
}
@Callable(i)
func getFunds(amount: Int) = {
let quorum = 2
let currentKey = toBase58String(i.caller.bytes)
let xxxStartupFund = currentKey + "_" + "sf"
let xxxStartupVotes = currentKey + "_" + "sv"
let currentAmount = match getInteger(this, xxxStartupFund) {
case a:Int => a
case _ => 0
}
let totalVotes = match getInteger(this, xxxStartupVotes) {
case a:Int => a
case _ => 0
}
let newAmount = currentAmount - amount
if (amount < 0)
then throw("Can't withdraw negative amount")
else if (newAmount < 0)
then throw("Not enough balance")
else if (totalVotes < quorum)
then throw("Not enough votes. At least 2 votes required!")
else ScriptResult(
WriteSet([
DataEntry(xxxStartupFund, newAmount)
]),
TransferSet([ScriptTransfer(i.caller, amount, unit)])
)
}
@Callable(i)
func vote(amount: Int, address: String) = {
let currentKey = toBase58String(i.caller.bytes)
let xxxInvestorBalance = currentKey + "_" + "ib"
let xxxStartupFund = address + "_" + "sf"
let xxxStartupVotes = address + "_" + "sv"
let currentAmount = match getInteger(this, xxxInvestorBalance) {
case a:Int => a
case _ => 0
}
let currentVotes = match getInteger(this, xxxStartupVotes) {
case a:Int => a
case _ => 0
}
let currentFund = match getInteger(this, xxxStartupFund) {
case a:Int => a
case _ => 0
}
if (amount <= 0)
then throw("Can't withdraw negative amount")
else if (amount > currentAmount)
then throw("Not enough balance")
else ScriptResult(
WriteSet([
DataEntry(xxxInvestorBalance, currentAmount - amount),
DataEntry(xxxStartupVotes, currentVotes + 1),
DataEntry(xxxStartupFund, currentFund + amount)
]),
TransferSet([ScriptTransfer(i.caller, amount, unit)])
)
}
@Verifier(tx)
func verify() = {
match tx {
case t: TransferTransaction =>false
case _ => true
}
}
เชธเซเชฐเซเชธ: www.habr.com