На самом деле да, вы правы, не существует умных контрактов, как в Ethereum, но есть умные аккаунты и умные активы.По сути, интеллектуальная учетная запись Waves может проверять, соответствует ли транзакция определенным условиям, которые определены в сценарии, прежде чем транзакция будет отправлена для включения в следующий сгенерированный блок.Таким образом, вы можете использовать скрипт в своей учетной записи, который позволит вам контролировать все исходящие транзакции в различных случаях использования, включая 2FA, Multisig, условное депонирование и оракулы среди прочих (вы можете сделать это с помощью SetScript Transaction ). Концепция интеллектуальных активов проста, интеллектуальные активы - это активы с прикрепленным сценарием, который проверяет каждую транзакцию в этом активе (это можно сделать с помощью Транзакция SetAssetScript ).
Если вы хотите узнать больше, вы можете проверить разделы «Умные учетные записи» и «Умные активы».Вы можете начать создание умной учетной записи или умных активов через Waves IDE . Вот простой пример умного актива для создания варианта использования белого списка:
let whiteListAccount = tx.sender
match tx {
case tx : TransferTransaction =>
let recipient = toBase58String(addressFromRecipient(tx.recipient).bytes)
isDefined(getInteger(whiteListAccount, recipient))
case _ => true
}
А вот простой пример умной учетной записи для 2-3 MultiSig:
#define public keys
let alicePubKey = base58'5AzfA9UfpWVYiwFwvdr77k6LWupSTGLb14b24oVdEpMM'
let bobPubKey = base58'2KwU4vzdgPmKyf7q354H9kSyX9NZjNiq4qbnH2wi2VDF'
let cooperPubKey = base58'GbrUeGaBfmyFJjSQb9Z8uTCej5GzjXfRDVGJGrmgt5cD'
#check whoever provided the valid proof
let aliceSigned = if(sigVerify(tx.bodyBytes, tx.proofs[0], alicePubKey )) then 1 else 0
let bobSigned = if(sigVerify(tx.bodyBytes, tx.proofs[1], bobPubKey )) then 1 else 0
let cooperSigned = if(sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubKey )) then 1 else 0
#sum up every valid proof to get at least 2
aliceSigned + bobSigned + cooperSigned >= 2
Другие примеры можно найти в Waves IDE , Документация Waves и в Github .Библиотека Waves API JS устарела, для этой цели вы можете использовать Транзакции Waves .