Как я могу создавать умные контракты и активы с JS? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь написать умные контракты для Waves Platform, насколько я понял, нет умных договоров, как в Ethereum, есть умные учетные записи и умные активы, которые могут проверять транзакции, но как я могу создать эту умнуюконтракты и активы?Я не нашел методов в библиотеке JS (https://github.com/wavesplatform/waves-api).

1 Ответ

0 голосов
/ 22 февраля 2019

На самом деле да, вы правы, не существует умных контрактов, как в 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...