Tlang — это язык программирования класса Lisp, предназначенный для удаления виртуальной машины из блокчейна.
Виртуальная машина в блокчейне не является необходимой, поэтому можно использовать интерпретируемую форму выполнения tlang для выражения смарт-контрактов и предоставлять стандартные шаблоны транзакций. Обычные транзакции выполняются с использованием шаблонов транзакций, а сложные логические транзакции могут быть выражены разработчиками приложений на языке tlang (также можно использовать SDK для языков Java, .NET, JavaScript, Go и т. д., программы, написанные с помощью SDK, будут автоматически переведены на tlang).
Ниже приведён пример логики контракта, написанной на tlang.
Логика этого контракта заключается в том, что если вы хотите, чтобы результат выполнения контракта был истинным, то необходимо знать мой день рождения 23 июня 2017 года или предоставить pubKey и подпись, соответствующую этому ключу, для этой транзакции.
Чтобы сделать результат контракта истинным, вызывающий объект должен предоставить правильные данные: день рождения, pubKey и sign.
Данные, предоставленные вызывающей стороной:
(define birthDay "{birthDay}")
(define pubKey "{pubKey}")
(define sign "{sign}")
Приведённые выше пары ключ-значение поступают от вызывающего объекта, данные представляют собой пары ключ-значение, которые добавляются непосредственно в область действия во время выполнения без необходимости объединения кода, что исключает возможность внедрения кода.
Ниже приведены три строки логики смарт-контракта, которые являются статическими и не могут быть изменены вызывающим объектом.
Логика, определённая разработчиком контракта:
(define pubKeyHash="8658cefd0c1cf0ff294d14a66278f5a5490a1f8e")
(define myBirthDayHash="d4a0f6c5b4bcbf2f5830eabed3daa7304fb794d6")
(or
(= (hash160 birthDay) myBirthDayHash)
(and
(= (hash160 pubKey) pubKeyHash)
(= (decrypt pubKey sign) txHash)))
Функции and = hash160 или decrypt являются системными функциями, txHash или txId — это хэш текущей записи транзакции.
Если предоставляется функция checksig, то выражение (= (decrypt pubKey sign) txHash) также может быть записано как (checksig pubKey sign txHash).
PS: Кстати, этот пример не очень хорош, потому что день рождения можно перебрать, начиная с сегодняшнего дня и двигаясь назад на 100 лет, вычисляя хэш каждого дня и сравнивая его с myBirthDayHash, тогда можно будет забрать активы, заблокированные этим контрактом.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )