4

How exactly can I fund the emulator wallets with custom currencies? Please show an emulator example doing so.

3 Answers 3

3

Here's an example:

import Data.Default (def)
import qualified Data.Map as Map
import qualified Ledger.Ada as Ada
import qualified Ledger.Value as Value
import Wallet.Emulator.Wallet (Wallet(..))
import Plutus.Trace.Emulator (EmulatorTrace, EmulatorConfig(..), runEmulatorTraceIO', 
                              activateContractWallet)

main :: IO ()
main = do
  let dist = Map.fromList [ (Wallet 1, Ada.lovelaceValueOf 100_000_000
                                    <> Value.singleton "ffff" "mytoken" 10)
                          , (Wallet 2, Ada.lovelaceValueOf 25_000_000)
                          ]
      emCfg = EmulatorConfig (Left dist) def def
  runEmulatorTraceIO' def emCfg myTrace

In summary, Wallet 1 starts of with 100 ADA, and 10 tokens with currency symbol ffff and token name mytoken. Wallet 2 simply starts with 25 ADA.

The Auction use-case example demonstrates that.

3
  • Thanks, but I didn't find as such in the example you pointed to.
    – Kwaggy
    Commented Aug 30, 2021 at 20:16
  • Is there a way to show the final fine-grained distribution of Value amongst all the wallets (i.e., all the various currencies)?
    – Kwaggy
    Commented Aug 30, 2021 at 22:18
  • 1
    If you mean the distribution of Value for all the wallets at the end of emulation, then the answer is that you don't need to do anything more than the example above. The function runEmulatorTraceIO prints the distribution for all wallets in the terminal at the end of emulation.
    – kolam
    Commented Aug 30, 2021 at 22:34
0

12/2022, plutus-apps v1.0.0 update on the accepted answer.

Wallet 1 is not working anymore. You can use knownWallet 1.

Or you can import Plutus.Contract.Test (w1, w2) and then use w1 , w2 as your simulated wallets.

Also EmulatorConfig has 2 components, not 3. So it is:

emCfg = EmulatorConfig (Left dist) def

BTW I get error when setting initial state with custom currencies.

0

the easier way I found:

dist = Map.fromList [ (wallet 1, Ada.lovelaceValueOf 1_000_000_000 ) -- treasury
                        , (wallet 2, Ada.lovelaceValueOf 1_000_000_000  
                            <> Value.singleton yacadaNFTSymbol  (U.giveReferralNFTName )  15) -- referral

in : https://github.com/cmorgado/yacada_learning

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.