Как адрес закодирован в Plutus?

Я попробовал какой-то код в Plutus Playground и обнаружил ошибки компиляции. Есть идеи по поводу исправления этого? Я использую примеры кода. Кажется, в назначении адреса есть изменение спецификации. Я видел ту же ошибку в другом месте.

module MyFirstPlutusSmartContract where

import qualified Language.PlutusTx            as PlutusTx
import qualified Language.PlutusTx.Prelude    as P
import           Ledger
import           Wallet
import           Ledger.Validation
import           Playground.Contract


myFirstValidator :: ValidatorScript
myFirstValidator = ValidatorScript (fromCompiledCode $$(PlutusTx.compile
    [|| \(submittedPIN :: Int) (myPIN :: Int) (p :: PendingTx') ->
     if submittedPIN == myPIN
     then ()
     else $$(P.error) ($$(P.traceH) "Please supply the correct PIN number to withdraw ada." ())
     ||]))

smartContractAddress :: Address'
smartContractAddress = scriptAddress myFirstValidator
watchSmartContract :: MockWallet ()
watchSmartContract = startWatching smartContractAddress

depositADA :: Int -> Value -> MockWallet ()
depositADA pin val = payToScript_ smartContractAddress val (DataScript (lifted pin))

withdrawADA :: Int -> MockWallet ()
     withdrawADA pin = collectFromScript myFirstValidator (RedeemerScript 
    (lifted pin))

    $(mkFunction 'watchSmartContract)
    $(mkFunction 'depositADA)
    $(mkFunction 'withdrawADA)

Ошибка -

Line 13, Column 53:
 error:
    • Not in scope: type constructor or class ‘PendingTx'’

Line 19, Column 25:
 error:
    Not in scope: type constructor or class ‘Address'’
    Perhaps you meant one of these:
      ‘Address’ (imported from Ledger),
      ‘AddressOf’ (imported from Ledger)
   |
19 | smartContractAddress :: Address'
   |                         ^^^^^^^^

0 ответов

Другие вопросы по тегам