Skip to main content

Lamina1 Users & Developers Guide

Introduction

Via the Lamina1 Whitepaper:

Lamina1 is building a Layer 1 blockchain, interoperating tools, and decentralized services optimized for the Open Metaverse – providing communities with infrastructure, not gatekeepers, to build a more immersive internet.

Lamina1 uses a high-speed Proof-of-Stake (PoS) consensus algorithm, customized to support the needs of content creators – providing provenance for creatorship and enabling attributive and behavioral characteristics of an object to be minted, customized and composed on-chain.

We chose to start with Avalanche, a robust generalized blockchain that delivers the industry’s most scalable and environmentally-efficient chain for managing digital assets to date. This starting point provides Lamina1 with a flexible architecture and an extendable platform to support our goals in data storage, interoperability, integration incentives, carbon-negative operation, messaging, privacy, high-scale payments and identity.

We intend to work with the Avalanche team pre-launch to contribute back patches to be incorporated upstream, but anticipate that many of our features will remain only available to Lamina1 users. Here’s what you can expect at Mainnet:

  • Open Metaverse Data
  • Carbon Token Staking
  • Cross-chain Integration
  • High-scale Payments
  • OpenID Connect
  • EVM Quality of Life Improvements

For more information about Lamina1 and our vision for Open Metaverse builders & creators, visit us at https://www.lamina1.com/.

Lamina1 Token

L1 is the native token of Lamina1. It’s a hard-capped, scarce asset that is used to pay for fees, secure the platform through staking, and provide a basic unit of account between the multiple Subnets created on Lamina1. 1 nL1 is equal to 0.000000001 L1.

Keep in mind that Lamina1 is currently in Testnet and all coins gained or earned during this phase will not transfer over to Mainnet and have no intrinsic value. We will never sell Testnet L1 tokens, and anyone who attempts to do so is scamming you. You can get a small allocation of Testnet L1 tokens for free everyday using our faucet. If you need more Testnet L1 tokens to run a node or otherwise test the platform please reach out to us on Discord or email us at [email protected].

Lamina1 Testnet

Lamina1 is currently in its first TestNet phase. In this first phase, we will be pressure testing a live fork of the Avalanche platform so that we have a solid foundation on which to build the additional features and components outlined in our whitepaper. While the ultimate goal is to ensure the platform runs smoothly and without issues, we’re going to be doing a lot of stress testing in this phase, and plan to have periodic resets of the network over the next month or two. In the spirit of open development, we encourage you to join us, hack away and create amazing things on Lamina1, but please be aware that some functionality is under active development and you may need to redeploy your creations after any network reset in this initial stage of the project.

How to Participate in TestNet

Part of Lamina1’s vision is ensuring the emerging Open Metaverse ecosystem is owned and operated by the users and creators. We need your help to achieve this and there will be many ways to participate in the various stages of Lamina1’s development as new functionality rolls out.

While we welcome everyone to join us in this first phase, a lot of the streamlined tools and SDKs we are working on will not be available yet, so you’ll be exposed to the traditional blockchain user experience, with all of its friction and flaws. Regardless, we’ll do our best to walk you through all the major features of the system.

Here’s how you can join us in Testnet:

Get & transfer Testnet assets - Learn how to set up a Lamina1 wallet, use the faucet to get your first Testnet L1 tokens, send & receive assets, and transfer funds between the three chains.

Stake Testnet L1 tokens to earn more - Staking is one way in which you, as a member of the Lamina1 community, can contribute to running the network while earning rewards. Our short guide will teach you what staking means and how to stake your Testnet L1 tokens on nodes to earn interest on them.

Run a node - Technical community members who want to go a step further in supporting the network can run their own nodes, decentralizing the platform while earning rewards in the process.

Develop decentralized apps (Coming February 2023) - Developers can use Solidity and the Lamina1 EVM to build custom assets, marketplaces, bridges, dApps, or anything else you can dream up.

Mint NFTs (Coming February 2023) - Interested in putting your creative endeavors on a blockchain so that they can be traded and used by the L1 community? We’ll walk you through the process of minting your first NFTs and other assets on the Lamina1 testnet.

Launch a Subnet (Coming soon) - Need your own dedicated space to launch a demanding Metaverse experience or add functionality to the L1 platform? Subnets allow you to launch your own interoperable blockchain in the L1 ecosystem.

Build an immersive experience (Coming soon) - Learn how to bring blockchain assets into your Unity-built experiences using our Unity SDK.

Lamina1 Architecture

The Lamina1 Network is based on a fork of the Avalanche platform, a proof-of-stake blockchain network consisting of multiple, interoperating blockchains that extend the capability of Ethereum compatible systems. As a result, the Lamina1 network is compatible with familiar ETH method calls utilizing the Ethereum Virtual Machine as its “C” or “Contract” chain, alongside platform specific X and P chains. Read below for more information on what purpose these chains serve, and how to transact between wallets and chains to perform network operations.

Avalanche has extensive documentation on their platform and we recommend that anyone interested in learning more about the underlying architecture of Lamina1 and its chains go through the links provided below.

alt_text

Source: https://docs.avax.network/overview/getting-started/avalanche-platform

C (Contract) Chain

Allows clients to interact with the C-Chain, Lamina1’s main EVM instance, as well as other EVM instances.

C-Chain API Documentation

Base URL (EVM compatible calls): <node_base_url>/ext/bc/C/rpc

Base Extension URL: <node_base_url>/ext/bc/C/lmna

Purposes

  • Ethereum-compatible calls for fund transactions
  • Smart contract interactions
  • Funds from Testnet faucet are provided as C-Chain tokens
  • Ability to interact with Lamina1 Network via ETH-capable client applications such as Metamask

X (Exchange) Chain

Allows clients to create and trade assets, including L1, on the X-Chain as well as other instances of the AVM.

X-Chain API Documentation

Base URL (AVM, Avalanche VM): <node_base_url>/ext/bc/X

Purposes

  • X-Chain funds are required to create NFT collectible families and mint NFT assets from those collections.
  • Minted NFT transfers are targeted at the destination’s X-Chain wallet.

P (Platform) Chain

Allows clients to interact with the P-Chain (Platform Chain), which maintains Lamina1’s validator set, staking, and handles blockchain and Subnet creation.

P-Chain API Documentation

Base URL (PlatformVM): <node_base_url>/ext/bc/P

Purposes

  • Handles node validation
  • Handles staking on nodes
  • Allows for Subnet creation and user-specified blockchains

Get started

Wallet Setup & Usage

Wallet Basics

The first step to interacting with any blockchain is usually to create a wallet. A wallet is an account that holds your assets,which you can use to sign and submit blockchain transactions. Some basic example transactions include: sending cryptocurrency to someone, interacting with a decentralized app (dApp), and voting on changes to the blockchain.

One very important aspect of blockchain is that you are in control of your assets. This means that you need to take precautions when setting up and securing your wallet to ensure that no one else gains access to it. Once someone has access to your wallet or you lose it, nobody can help you get it back. While that sounds ominous, there are simple steps you can take to ensure your wallet and assets are never compromised:

NOT RECOMMENDED

  • Taking a screenshot or photo of your recovery phrase or private key
  • Saving your recovery phrase or private key in an unencrypted text file
  • Sharing your recovery phrase or private key with anyone

RECOMMENDED

  • Writing down on paper your recovery phrase, with the correct indexes
  • Keeping your recovery information somewhere that is safe from theft and damage
  • Using a hardware wallet (not yet available in Lamina1 Testnet)

There are two wallet apps that are currently supported by Lamina1. We recommend you use the official Lamina1 wallet app to set up your wallet and then import the wallet into Metamask when you’re ready to start using web apps built on the Lamina1 platform.

Lamina1 Web Wallet - This is the official wallet app for the Lamina1 platform and gives access to Lamina1-specific functionality. Using this app you can:

  • Set up a wallet for any blockchain on the Lamina1 platform
  • Send and receive currency and assets within any Lamina1 blockchain
  • Send currency and assets across any Lamina1 blockchain
  • Create and mint assets and NFTs on the Lamina1 X-chain
  • Stake or run a Lamina1 node

Metamask - Metamask is one of the most popular wallet apps for the Ethereum ecosystem and it’s also a browser extension which means you can use it to interact with any webapps that are integrated into the Lamina1 platform. Using Metamask you can:

  • Set up a wallet for any EVM compatible blockchain
  • Send and receive currency within any EVM compatible blockchain
  • Interact with web apps that have EVM functionality integrated (NFT marketplaces, decentralized exchanges, Web3 games, etc.)

No matter which wallet app you start with, you can always import your wallet to the other supported wallet apps. We’ll walk you through the necessary steps for all supported wallets below.

Using the Lamina1 Web Wallet

New Wallet via Web Wallet

The Lamina1 Web Wallet will guide you through the steps needed to set up your first wallet. For convenience, we will also walk you through the process here and add additional context and information where helpful.

alt_text

Start by visiting https://testnet.lamina1.network/ in your browser. Once you’re at the landing page select WALLET. When the wallet opens we’re going to select CREATE NEW WALLET and then GENERATE KEY PHRASE.

You should now be looking at a grid of 24 words that make up your recovery key phrase. This is essentially the master password for your wallet and anyone who gets a hold of it has full access to anything in your wallet. While it’s a pain, one of the safest ways to record this information is with a paper and pen and store it in a safe or other secure location. Electronic devices are popular targets for people to attack looking for crypto keys so taking a photo or copy & pasting the information may be risky. Also note that if you lose this information, it may be impossible to get back into your wallet. Once you’ve written down the words and their corresponding numbers, click the checkbox and ACCESS WALLET.

The app will test that you recorded the recovery phrase by asking for a few of the words. Select them to proceed. If successful you’ll see a green check mark, click ACCESS WALLET.

alt_text

Congratulations, you’ve created your first Lamina1 wallet! From here you’ll be able to see your L1 balance and assets (if you have any) on the X, P, and C chains. At this stage, we recommend you save your private key so that you don’t have to use your recovery phrase every time you want to access your wallet.

Recommended next steps:

Saving private key to Web Wallet

The Lamina1 Web Wallet does not save your private key by default so if you want to avoid entering your private key or recovery phrase every time you use it, you should consider saving it. To do this, you’ll first need to have your wallet set up within the Web Wallet. If you can see a section that says Balance at the top of the Web Wallet then you’re all set to continue to the next section, otherwise you’ll need to access your wallet by importing the recovery phrase or using a private key.

Once your wallet is set up, go to the MANAGE KEYS section where you should see a screen that looks like this:

alt_text

From here are two primary ways to save your wallet.You can do both if you choose.

Save to browser

This approach works like a login by encrypting and saving your private key within the browser. Later, when you come back to the Web Wallet within the same browser, you can easily access your wallet using just the password you set up. This approach only works when accessing the Web Wallet from the same computer and browser every time. If you need an approach that you can take to different computers or browsers, then consider also creating a keystore file.

To do this, follow the instructions above until you’re at the MANAGE KEYS section of the Web Wallet. From here, click on the SAVE KEYS button with the yellow caution symbol. The Web Wallet will ask you to enter an account name and password. alt_text

You can enter whatever you’d like for the account name ––this is saved locally so no one else will see it unless they’re on your computer. Your password should be strong and not re-used from somewhere else. If anyone gets the password and access to your computer, they’ll have complete access to your wallet. We generally recommend you use a good password manager. PAY ATTENTION TO THE WARNING on this screen. You must still secure your recovery phrase somewhere in case your browser cache is cleared or you lose access to the computer. Nobody can help you recover this username and password if you lose your recovery phrase.

Once you enter a valid username and password and press SAVE, you’ll be returned to the MANAGE KEYS page. If it was successful you should see your new username in the lower left corner of the wallet (if on desktop). If you click on your username you can change your password or delete the account from the browser. Your account is now saved to your browser. The next time you visit the Web Wallet you should see your local accounts at the top of the list.

alt_text

Save to encrypted file

Creating an encrypted keystore file is a convenient way to create a portable backup of your private key that you can take to other computers or browsers. This keystore file will be encrypted with a regular password, so make sure the password is not easily guessed and make sure you don’t lose or forget it.

To begin, make sure you’re logged into your account in the Lamina1 Web Wallet and go to the MANAGE KEYS section. From here, click on the EXPORT KEYS button where you will be prompted for a password. Again, make sure the password is not easily guessed and make sure you don’t lose or forget it. Password managers are highly recommended.

Once you enter and confirm your password, you should download a .json file. This file is your encrypted key store and can be used to recover your account from any computer or browser. As long as you’ve used a secure password, it should be relatively safe to store on your computer, send via email, or backup on a USB stick or backup drive.

Importing wallet to Web Wallet

The Lamina1 Web Wallet allows import of an existing wallet via multiple methods, some of which are detailed below.

alt_text

Import via Private Key

The private key for your wallet can be used to gain access via the Lamina1 Web Wallet, for example if it was created in another client such as Metamask. Metamask private keys can be retrieved via Account Details by using the Export Private Key button and providing your Metamask password.

  1. On the intro screen, choose ‘Access Wallet’ and select the Private Key method.
  2. Enter your wallet private key when prompted and click Access Wallet. If your private key is valid, you will be directed to the main wallet dashboard.
Import via Mnemonic

The Mnemonic Key Phrase is the phrase that you securely stored during wallet creation if the Web Wallet was used. The phrase can be manually entered to regain access to your wallet.

  1. On the intro screen, choose ‘Access Wallet’ and select Mnemonic Key Phrase method.
  2. Enter all 24 words from the recovery phrase and click ‘Access Wallet’. If correct you will be directed to the main wallet dashboard.
Import via Keystore File
  1. On the intro screen, choose ‘Access Wallet’ and select Keystore File method.
  2. Click Select File and navigate to the .json format keystore file. If valid you will be directed to the main wallet dashboard.

Exporting From Web Wallet

There are multiple ways to backup your wallet from the Lamina1 Web Wallet interface, to ensure that you will always have access to your wallet & assets. These exported resources can be used in the Access Wallet section of the main page of the Web Wallet.

Export C-Chain Private Key
  1. In the Web Wallet interface, choose Manage Keys from the sidebar.
  2. On the “My Keys” page, click the “View C Chain Private Key” link. A modal will appear with your C-Chain private key, which is compatible with Ethereum-based wallet clients and can be used to import your wallet. Do not disclose this key, it provides full access to import your wallet and access Assets to anyone with access.
  3. As an example of how to use your private key for access, it can be entered in Metamask via the User Avatar icon → Import Account option and choosing the Private Key method.

alt_text

‘My Keys’ section which allows for export of wallet Private Key information.

Export Keystore File

Creating an encrypted keystore file is a convenient way to create a portable backup of your private key that you can take to other computers or browsers. This keystore file will be encrypted with a regular password, so make sure the password is not easily guessed and make sure you don’t lose or forget it.

  1. To begin, make sure you’re logged into your account in the Lamina1 Web Wallet and go to the MANAGE KEYS section.
  2. Click on the EXPORT KEYS button where you will be prompted for a password. Again, make sure the password is not easily guessed and make sure you don’t lose or forget it. Password managers are highly recommended.
  3. Once you enter and confirm your password, your browser should download a json file.

This file is your encrypted key store and can be used to recover your account from any computer or browser. As long as you use a secure password, it should be relatively safe to store on your computer, send via email, or backup on a USB stick or backup drive.

Using Metamask

Metamask is one of the most popular wallet apps for the Ethereum ecosystem and it’s also a browser extension which means you can use it to interact with any webapps that are integrated into the Lamina1 platform. Using Metamask you can:

  • Set up a wallet for any EVM compatible blockchain
  • Send and receive currency within any EVM compatible blockchain
  • Interact with web apps that have EVM functionality integrated (NFT marketplaces, decentralized exchanges, Web3 games, etc.)

Creating a new wallet with Metamask

  1. First install the Metamask extension on your browser. If you already have Metamask, you can use your existing accounts and skip past the first 5 steps. Your Ethereum and other network balances will not be interoperable within the Lamina1 Testnet (yet).
  2. Click through the prompts until it asks you to import or create a wallet. Click on “Create a Wallet” unless you already have a recovery phrase you want to use (go to the instructions for importing a wallet).
  3. Metamask will prompt you for a password. Make sure the password is not easily guessed and make sure you don’t lose or forget it as nobody can help you recover it. This password is not tied to an email or to your identity. It is stored locally on the browser and ensures that anyone who gains access to your computer can’t easily access your wallet without it.
  4. Next, you will go through the process of storing your secret recovery phrase. Metamask has a useful video and tips here that are worth paying attention to. In short, this is essentially the master password for your wallet and anyone who gets a hold of it has full access to anything in your wallet. While it’s a pain, one of the safest ways to record this information is with a paper and pen and store it in a safe or other secure location. Electronic devices are popular targets for people to attack looking for crypto keys so taking a photo or copy & pasting the information may be risky. Also note that if you lose this information, it may be impossible to get back into your wallet. Once you’ve written down the words and their corresponding numbers, click NEXT.
  5. Metamask will ask you to enter your recovery phrase to make sure you recorded it correctly. If not, click BACK and try again. Once successful, click ALL DONE.

Connecting Metamask to the Lamina1 TestNet

Once you have a Metamask account connected to the Ethereum Mainnet, we can connect to the Lamina1 Testnet.

  1. Click on the circular account image within Metamask and click on SETTINGS.
  2. Click on NETWORKS and then ADD NETWORK.
  3. You’ll see a list of built-in networks, ignore these and click ADD A NETWORK MANUALLY at the bottom.
  4. Enter in the information as displayed below using https://rpc-testnet.lamina1.com:443/ext/bc/C/rpc for the RPC URL

alt_text

  1. Hit SAVE and you should now be connected to the Lamina1 Testnet. Head to the faucet to get some L1 tokens!

Importing an existing wallet to Metamask

You can import an existing wallet (including one generated by the Lamina1 Web Wallet) to Metamask using a recovery phrase that you previously set up. This process looks different depending on whether you already have an account setup in Metamask and you’re adding a new one or if you’re adding an account to a fresh installation of Metamask.

Importing first wallet to new Metamask installation

The only way to import a wallet to a new Metamask installation is using a recovery phrase.

  1. On the “New to MetaMask screen” select IMPORT WALLET.

alt_text

  1. You’ll now be faced with the unfortunate task of typing in each of the words in your recovery phrase. If you’re coming from the Lamina1 Web Wallet, then you’ll likely have 24 recovery words and you’ll need to choose that from the drop down box. Once you enter in all the words, you’ll be asked to enter a password so that you can save your account and avoid doing this again within this browser. Make sure the password is not easily guessed and make sure you don’t lose or forget it, as nobody can help you recover it. This password is not tied to an email or to your identity. It is stored locally on the browser and ensures that anyone who gains access to your computer can’t easily access your wallet without it. If you lose it, you’ll need to use your recovery phrase to access your wallet in Metamask.

If you entered your recovery phrase correctly, you should now be connected to the Ethereum Mainnet with your imported account. Next, you’ll want to connect to the Lamina1 Testnet.

Importing an additional wallet to an existing Metamask installation.

If you already have Metamask installed with an account set up you can easily add additional accounts using an exported private key. Learn how to export your private key from Lamina1 Web Wallet.

  1. Within Metamask click on the circular account icon and select IMPORT ACCOUNT.
  2. Paste your exported private key into this field and select IMPORT and you’re done. You should take a second to copy some random text using COMMAND-V or CONTROL-V so that your private key isn’t sitting in your clipboard.

Exporting from Metamask

You can export your private key from Metamask to easily import it into the Lamina1 Web Wallet or into a separate Metamask installation.

  1. Make sure you’re signed into you Metamask account
  2. Within Metmask, click on the three vertical dots in the top right of the window and select ACCOUNT DETAILS.
  3. Select EXPORT PRIVATE KEY and enter your password.

Your private key should now be displayed. When you’re finished, make sure you close this window and clear your clipboard by copying some random text.

Lamina1 Web Applications Overview

Lamina1 Testnet Hub

The Lamina1 Testnet Hub https://testnet.lamina1.network/ is where you can find all of the official tools for interacting with the Lamina1. This will be updated frequently as new tools and docs are released.

alt_text

Lamina1 Web Wallet

alt_text

The Lamina1 Web Wallet is currently the official tool for interacting with the Lamina1 platform and its blockchains, and is a fork of the same wallet used by Avalanche. One of our goals is to streamline the user experience of tools like this, but with a little effort, the current web wallet is pretty easy to understand.

We’ve provided dedicated sections on how to create and login to your wallet so for this section we’ll assume you’re already logged in and give some context for the various sections of the wallet.

Portfolio Tab

Balances

The first thing you’ll notice is a readout of your L1 token balances on each of the three primary chains, for more information on what each of these chains does, please refer to the architecture section.

Addresses

To the right of your balances, you’ll see your addresses for each of the three primary chains. You can provide these addresses to other people or to the testnet faucet to receive L1 tokens or other assets.

Assets

At the bottom of the screen, you’ll find a section on assets which lists all of the various assets you have in your wallet. This will usually include L1 tokens, but also could also include any assets that have been minted and distributed by other individuals.

Send Tab

The send tab will allow you to send L1 tokens and other assets to other individuals or addresses. Keep in mind that you can only send assets to addresses on the same chain. If you need to transfer assets to someone with an address on a different chain, you’ll need to do a cross-chain transfer. Note: You can not transfer assets to another address on the P-chain.

Cross Chain Tab

The cross chain tab will allow you to transfer your assets from one chain to another chain. You may do this so that you can send the assets to a person who has an address on another chain or perhaps to use functionality on a specific chain such as staking L1 tokens on the P-chain. You can read more in the cross-chain transfer section.

Earn Tab

The earn tab is where you can earn rewards by staking your L1 tokens on nodes. In order to stake, you must have at least 1 L1 token on the P-chain. Learn more about staking here.

Activity Tab

This tab will eventually show you a history of your recent transactions. We are working on releasing an initial block explorer, but until then, this tab will be empty.

Manage Keys Tab

This tab will allow you to manage and export the private keys for your wallet. You can use this functionality to migrate your wallet to another computer or wallet app. You can also save your wallet to the browser in this tab so that you can use a password to easily access your wallet from the same computer. As always, be careful with your private keys. If anyone gets access to them they have unlimited access to your wallet. For more information, see the dedicated sections for saving your wallet and exporting your keys.

Advanced Tab

This tab includes advanced features including recovering L1 tokens that are stuck in an unsuccessful cross chain transaction as well as signing and verifying messages.

Getting L1 Tokens

Testnet: Retrieving Funds from the Faucet

The purpose of a faucet on the Lamina1 network is to provide funds for testing functionality such as staking, minting NFTs, or interacting with smart contracts on Testnet. These funds are limited to one retrieval per 24 hours on Testnet to avoid harmful behavior, and fees associated with activities like validator staking are scaled appropriately for testing purposes. To retrieve 2 L1 test tokens, do the following:

  1. Access the faucet website at https://faucet-test.lamina1.network.
  2. You have the option of connecting your Metamask wallet if you have one by clicking the Mask fox icon in the address field. Otherwise, enter your C-Chain wallet address in the field and click ‘GET 2 L1’.
  3. This interface is rate limited to prevent abuse, so it can only be accessed 5 times every 24 hours. This is based on individual access and not only the address of the wallet being used.

Sending coins and assets

You can send coins and NFT assets to other wallets/addresses on the same chain. To send assets to an address on a different chain, you must first transfer the source assets to the destination chain using a cross-chain transfer. You can tell what the destination chain is by looking at the first few characters of the destination address:

  • If it starts with a P it’s on the P-Chain
    • You cannot send/receive coins on the P-Chain, you must receive them on the X or C-Chain and then do a cross-chain transfer.
  • If it starts with an X it’s on the X-Chain
  • If it starts with 0x then it’s on the C-Chain

The C-Chain is where funds are initially distributed from the Testnet faucet, as well as any sort of transfers provided to Lamina1 creators. The C-Chain runs via the Ethereum Virtual Machine, so this process is similar to and compatible with those of other wallets such as Metamask.

To send funds via the Web Wallet:

  1. Access the ‘Send’ page.
  2. You are given a choice of the X or C-Chain to send funds. Choose the appropriate chain.
  3. In the field provided, enter the amount that you wish to send. The ‘MAX’ button will auto-fill the field with the maximum amount you can send based on your balance in the selected chain.
  4. Enter the desired recipient wallet address in the Address field. There is a camera button to enable scanning functionality if you have access to the recipient wallet’s QR code.
  5. Click Confirm and review the details of the transaction. When ready, press the Send Transaction button to complete the transfer. Once completed, you will receive a confirmation message as well as a hash representing the transaction.

alt_text

The Send page fund transfer interface

NOTE: The network does not allow the ability to send funds directly via P-Chain, as P-Chain funds are potentially staked for the purpose of running validation nodes, or delegating to other nodes on the network. In order to move funds to the P-Chain, see the Cross-Chain Transfers section below.

Cross-Chain Transfers

The Lamina1 platform has three primary blockchains and allows for users to launch their own blockchains. Each of these blockchains has its own state and cannot trivially interact with other chains. While Lamina1 intends to create tools that make this process seamless and easy, at the moment you must explicitly transfer coins to another blockchain to use them on that chain. For example:

  • If you want to stake coins on nodes then you must move L1 tokens to the P-Chain.
  • If you want to interact with smart contracts you need to move L1 tokens to the C-Chain (or to another subnet if the smart contract is not on the primary C-Chain).
  • If you want to transfer coins to an address someone gives you, you must move the coins to the chain that corresponds with that address.

To tell which chain you need to move to in order to transfer L1 tokens, simply look at the destination address:

  • If it starts with a P it’s on the P-Chain
    • You cannot send/receive coins on the P-Chain, you must receive them on the X or C-Chain and then do a cross-chain transfer.
  • If it starts with an X it’s on the X-Chain
  • If it starts with 0x then it’s on the C-Chain

The C-Chain is where funds are initially distributed from the Testnet faucet, as well as any sort of transfers provided to Lamina1 creators. The C-Chain runs via the Ethereum Virtual Machine, so this process is similar to and compatible with those of other wallets such as Metamask.

Luckily, this is pretty easy to do within the Lamina1 Web Wallet.

  1. Make sure you are logged into an account on the Lamina1 Web Wallet and that you have a balance of L1 tokens.
  2. Select the CROSS CHAIN tab within the Web Wallet.
  3. Choose the source and destination chains using the dropdown boxes and then enter the amount of L1 tokens you want to transfer.
  4. Select confirm and wait for the transaction to confirm on each chain.

Running a Lamina1 Node

There are a number of reasons why you might want to run a node on the Lamina1 network:

  1. The more nodes in the network, generally the more decentralized the platform becomes. By operating a node, you’re contributing to this decentralization and helping secure the platform.
  2. If you’re developing applications on Lamina1, you generally need to get or submit data to one of the blockchains. While you can decide to trust a public node’s API, most developers would prefer to run and trust their own node while avoiding potential public node congestion.
  3. Running a node can be a great way to earn L1 tokens if you decide to become a validator. Validators are nodes that actively participate in consensus and which are secured by staked L1 tokens.

The quickest way to learn about Lamina1 is to run a node and interact with the network.

In this tutorial, we will:

  • Install and run a Lamina1 node
  • Connect to Lamina1

Note to reader: Much of the documentation below has been pulled and modified from the Avalanche documentation, which can be found here. L1 documentation is still a work in progress. To build upon it or provide feedback, please join us on Discord and share in the designated #testnet-feedback channel.

Requirements

Computer Hardware and OS

Lamina1 is based on Avalanche, which is an incredibly lightweight protocol, so nodes can run on commodity hardware. Note that as network usage increases, hardware requirements may change.

  • CPU: Equivalent of 2 AWS vCPU
  • RAM: 4 GiB
  • Storage: 100 GiB
  • OS: Ubuntu 22.04 or MacOS >= Catalina

Networking

To run successfully, Lamina1 needs to accept connections from the Internet on the network port 9651. Before you proceed with the installation, you need to determine the networking environment your node will run in.

Running on a Cloud Provider

If your node is running on a cloud provider computer instance, it will have a static IP. Find out what that static IP is, or set it up if you didn't already.

Running on a Home Connection

If you're running a node on a computer that is on a residential internet connection, you have a dynamic IP; that is, your IP will change periodically. You will need to set up inbound port forwarding of port 9651 from the internet to the computer the node is installed on.

As there are too many models and router configurations, we cannot provide instructions on what exactly to do, but there are online guides to be found (like this, or this ), and your service provider support might help too.

DANGER

Please note that a fully connected Lamina1 node maintains and communicates over a couple of thousand live TCP connections. For some low-powered and older home routers that might be too much to handle. If that is the case you may experience lagging on other computers connected to the same router, nodes getting benched, failing to sync and similar issues.

Set up your node

Let’s install the GoLang implementation of a Lamina1 node and connect to the Lamina1 primary network.

Download Lamina1

For MacOS:

For Linux on PCs or cloud providers:

To Start a Node, and Connect to Lamina1

  • cd lamina1/
  • see the “Join Testnet” section in README.md

When the node starts, it has to bootstrap (catch up with the rest of the network). You will see logs about bootstrapping. When a given chain is done bootstrapping, in another terminal running ./check-bootstrap.sh in the lamina1/ directory will display true for each chain. If you make other API calls to a chain that is not done bootstrapping, it will return “API call rejected” because chain is not done bootstrapping. If you are still experiencing issues please contact us on Discord.

Your node is running and connected now.

You can use Ctrl + C to kill the node.

What Next?

Now that you've launched your Lamina1 node, what should you do next?

Your Lamina1 node will perform consensus on its own, but it is not yet a validator on the network. This means that the rest of the network will not query your node when sampling the network during consensus and you are not earning any L1 tokens.

If you want to add your node as a validator:

  • Use the Web Wallet at https://wallet-test.lamina1.network to generate a wallet address,
  • Using the Web Wallet, check to make sure you have at least 2000 L1 tokens on the P-Chain. You can use the "cross chain" function to transfer your C-Chain or X-Chain tokens to the P chain. If you’d like to get enough testnet tokens to run a node, please contact us on Discord.
  • Get your node-id by running ./get_my_nodeid.sh in the terminal within the lamina1/ directory where you ran your node from.
  • Use the Web Wallet to stake your tokens on that node ID, under the "Earn" option from the dropdown menu on the upper right.

Read here to learn more about being a validator, including: parameters, uptime requirements, and setting up your node.

Staking L1 Tokens

Staking is one of the easiest ways to support the Lamina1 platform while earning extra L1 tokens. If you’re unfamiliar with the term, staking refers to the act of locking L1 tokens up for a period of time in return for voting power in consensus. When staking L1 tokens you can decide to stake them on your own node, a process known as validating, or you can decide to stake them on a public node, a process known as delegating.

In return for supporting the platform in this way, stakers may receive extra L1 tokens proportional to their stake in the form at the end of their lockup. When you stake your L1 tokens you decide how long you want them locked up, with longer lock ups earning a higher interest rate.

The actual amount of interest you can earn for your staked coins is based on a number of parameters including:

  • Length of lockup
  • Performance or “uptime” of the node they’re staked on
  • Delegation fee of the node they’re staked on
  • Proportion of your L1 tokens in the total pool of tokens staked on the node

It is outside the scope of this document to provide a detailed breakdown of how staking rewards are calculated. Stay tuned for a dedicated whitepaper explaining this concept in more detail.

Note to reader: Much of the documentation below has been pulled and modified from the Avalanche documentation, which can be found here. L1 documentation is still a work in progress. To build upon it or provide feedback, please join us on Discord and share in the designated #testnet-feedback channel.

Staking Parameters

  • The minimum amount that a validator must stake is 2,000 L1
  • The minimum amount that a delegator must delegate is 1 L1
  • The minimum amount of time one can stake funds for validation is 1 day
  • The maximum amount of time one can stake funds for validation is 2 weeks
  • The minimum amount of time one can stake funds for delegation is 1 day
  • The maximum amount of time one can stake funds for delegation is 2 weeks
  • The minimum delegation fee rate is 2%
  • The maximum weight of a validator (their own stake + stake delegated to them) is the minimum of 3 million L1 and 5 times the amount the validator staked. For example, if you staked 2,000 L1 to become a validator, only 8000 L1 can be delegated to your node total (not per delegator)

Delegators

If you’re not interested in operating a node but still want to participate in staking, you can delegate other peoples’ validating nodes.

When you delegate stake to a validator, you specify:

  • The ID of the node you’re delegating to
  • When you want to start/stop delegating stake (must be while the validator is validating)
  • How many L1 tokens you are staking
  • The address to send any rewards to

While the actual process of delegating a node is very simple, there are a number of factors you’ll want to consider when determining which nodes you want to delegate and for how long.

INFO

The minimum amount that a delegator must delegate is 1 L1.

DANGER

Note that once you issue the transaction to add your stake to a delegator, there is no way to change the parameters. You can’t remove your stake early or change the stake amount, node ID, or reward address. If you’re not sure, ask for help on Discord.

Delegator Rewards

If the validator that you delegate tokens to is sufficiently correct and responsive, you will receive a reward when you are done delegating. Delegators are rewarded according to the same function as validators. However, the validator that you delegate keeps a portion of your reward specified by the validator’s delegation fee rate.

When you issue the transaction to delegate tokens, the staked tokens and transaction fees are deducted from the addresses you control. When you are done delegating, the staked tokens are returned to your address. If you earned a reward, it is sent to the address you specified when you delegated tokens.

Become a validator on the Platform Chain

In this tutorial, we’ll add a node to the Primary Network on Lamina1.

The Primary Network is inherent to the Lamina1 platform and validates Lamina1’s built-in blockchains. Running a validating node on the P-Chain is one of the most important ways you can contribute to Lamina1. While we do our best to walk you through each step, we recommend this role to those who are fairly technical and are comfortable using the command line and managing network settings.

The P-Chain manages metadata on Lamina1. This includes tracking which nodes are in which Subnets, which blockchains exist, and which Subnets are validating which blockchains. To add a validator, we’ll issue transactions to the P-Chain.

Important background information

Please take time to understand all of these concepts before you decide to run a validator on the Lamina1 Platform.

Uptime

If you’re running a validator, it’s important that your node is well connected to ensure that you receive a reward. A validator will receive a staking reward if they are online and responsive for more than 80% of their validation period, as measured by a majority of validators, weighted by stake. You should aim for your validator to be online and responsive 100% of the time.

You can call API method info.uptime on your node to learn its weighted uptime and what percentage of the network currently thinks your node has an uptime high enough to receive a staking reward. See here. You can get another opinion on your node's uptime from Avalanche's Validator Health dashboard. If your reported uptime is not close to 100%, there may be something wrong with your node setup, which may jeopardize your staking reward. If this is the case, please see here or contact us on Discord, so we can help you find the issue. Note that only checking the uptime of your validator as measured by non-staking nodes, validators with small stake, or validators that have not been online for the full duration of your validation period can provide an inaccurate view of your node's true uptime.

Why Is My Uptime Low?

Every validator on Avalanche keeps track of the uptime of other validators. Every validator has a weight (that is the amount staked on it.) The more weight a validator has, the more influence they have when validators vote on whether your node should receive a staking reward. You can call API method info.uptime on your node to learn its weighted uptime and what percentage of the network stake currently thinks your node has an uptime high enough to receive a staking reward.

You can also see the connections a node has by calling info.peers, as well as the uptime of each connection. This is only one node’s point of view. Other nodes may perceive the uptime of your node differently. Just because one node perceives your uptime as being low does not mean that you will not receive staking rewards.

If your node's uptime is low, make sure you're setting config option --public-ip=[NODE'S PUBLIC IP] and that your node can receive incoming TCP traffic on port 9651.

Staking

When you issue the transaction to add a validator, the staked tokens and transaction fee (which is 0) are deducted from the addresses you control. When you are done validating, the staked funds are returned to the addresses they came from. If you earned a reward, it is sent to the address you specified when you added yourself as a validator.

DANGER

Note that once you issue the transaction to add a node as a validator, there is no way to change the parameters. You can’t remove your stake early or change the stake amount, node ID, or reward address. Please make sure you’re using the correct values in the API calls below. If you’re not sure, ask for help on Discord. If you want to add more tokens to your own validator, you can delegate the tokens to this node - but you cannot increase the base validation amount (so delegating to yourself goes against your delegation cap).

Allow API Calls

To make API calls to your node from remote machines, allow traffic on the API port (9650 by default), and run your node with argument --http-host=

You should disable all APIs you will not use via command-line arguments. You should configure your network to only allow access to the API port from trusted machines (for example, your personal computer.)

Secret Management

The only secret that you need on your validating node is its Staking Key, the TLS key that determines your node’s ID. The first time you start a node, the Staking Key is created and put in $HOME/.lamina1/staking/staker.key. You should back up this file (and staker.crt) somewhere secure. Losing your Staking Key could jeopardize your validation reward, as your node will have a new ID.

You do not need to have L1 funds on your validating node. In fact, it's best practice to not have a lot of funds on your node. Almost all of your funds should be in "cold" addresses whose private key is not on any computer.

Requirements

You've read the Important background information, completed Running a Lamina1 Node, and are familiar with Lamina1’s Avalanche-based architecture.

In order to ensure your node is well-connected, make sure that your node can receive and send TCP traffic on the staking port (9651 by default) and that you started your node with config flag --public-ip=[YOUR NODE'S PUBLIC IP HERE]. Failing to do either of these may jeopardize your staking reward.

Add a Validator with Avalanche Wallet

First, we show you how to add your node as a validator by using the Lamina1 Web Wallet.

Retrieve the Node ID

Get your node’s ID by calling info.getNodeID:

curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"info.getNodeID"
}' -H 'content-type:application/json' 127.0.0.1:9650/ext/info

The response has your node’s ID:

{
"jsonrpc": "2.0",
"result": {
"nodeID": "NodeID-5mb46qkSBj81k9g9e4VFjGGSbaaSLFRzD"
},
"id": 1
}
Add as a Validator

Open the wallet, and go to the Earn tab. Choose Add Validator under the Validate section.

Fill out the staking parameters. They are explained in more detail in this doc. When you’ve filled in all the staking parameters and double-checked them, click Confirm. Make sure the staking period is at least 1 day, the delegation fee rate is at least 2%, and you’re staking at least 2,000 L1 on Testnet.

You should see a success message, and your balance should be updated.

Calling platform.getPendingValidators verifies that your transaction was accepted. Note that this API call should be made before your node's validation start time, otherwise, the return will not include your node's id as it is no longer pending.

Go back to the Earn tab, and click Estimated Rewards.

Once your validator’s start time has passed, you will see the rewards it may earn, as well as its start time, end time, and the percentage of its validation period that has passed.

You can also call platform.getCurrentValidators to check that your node's id is included in the response.

That’s it!