Lisk Documentation
-
+
diff --git a/assets/js/15e9dd0c.c5585342.js b/assets/js/15e9dd0c.c5585342.js
deleted file mode 100644
index 2e28e80a7..000000000
--- a/assets/js/15e9dd0c.c5585342.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[1674],{2888:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var t=o(5893),i=o(1151);const l={title:"Deploying a new ERC-20 token on Lisk",description:"A guide on how to deploy a new ERC-20 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","Fungible token"]},r="How to deploy a new ERC-20 token on Lisk",c={id:"building-on-lisk/token-development/deploy-erc-20",title:"Deploying a new ERC-20 token on Lisk",description:"A guide on how to deploy a new ERC-20 token on Lisk.",source:"@site/docs/building-on-lisk/token-development/deploy-erc-20.md",sourceDirName:"building-on-lisk/token-development",slug:"/building-on-lisk/token-development/deploy-erc-20",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Deploying a new ERC-20 token on Lisk",description:"A guide on how to deploy a new ERC-20 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","Fungible token"]},sidebar:"documentationSidebar",previous:{title:"Overview",permalink:"/lisk-documentation/token-development"},next:{title:"Deploying a new ERC-721 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721"}},s={},a=[{value:"1. Open Remix",id:"1-open-remix",level:2},{value:"2. Create a new file",id:"2-create-a-new-file",level:2},{value:"3. Copy the example contract",id:"3-copy-the-example-contract",level:2},{value:"4. Compile the contract",id:"4-compile-the-contract",level:2},{value:"5. Deploy the contract",id:"5-deploy-the-contract",level:2},{value:"6. Verify the contract",id:"6-verify-the-contract",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"how-to-deploy-a-new-erc-20-token-on-lisk",children:"How to deploy a new ERC-20 token on Lisk"})}),"\n",(0,t.jsxs)(n.p,{children:["This guide explains how to deploy a new ERC-20 token to Lisk.\nIn case you want to bridge an existing token from Ethereum, please refer to the guide ",(0,t.jsx)(n.a,{href:"../add-token-to-lisk",children:"Bridging an L1 token to Lisk"}),"."]}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["We will use Remix as framework for smart contract development in this guide, but feel free to choose a ",(0,t.jsx)(n.a,{href:"/category/building-on-lisk/deploying-smart-contract",children:"smart contract development framework"})," of your choice to implement your token contract."]})}),"\n",(0,t.jsx)(n.h2,{id:"1-open-remix",children:"1. Open Remix"}),"\n",(0,t.jsxs)(n.p,{children:["Navigate to ",(0,t.jsx)(n.a,{href:"https://remix.ethereum.org",children:"Remix"})," in your browser."]}),"\n",(0,t.jsx)(n.h2,{id:"2-create-a-new-file",children:"2. Create a new file"}),"\n",(0,t.jsxs)(n.p,{children:['Click the \ud83d\udcc4 ("Create new file") button to create a new empty Solidity file.\nYou can name this file whatever you\'d like, e.g. ',(0,t.jsx)(n.code,{children:"MyToken.sol"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"3-copy-the-example-contract",children:"3. Copy the example contract"}),"\n",(0,t.jsx)(n.p,{children:"Copy the following example contract into your new file:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";\n\ncontract MyToken is ERC20 {\n constructor(string memory _name, string memory _symbol, uint256 initialSupply) ERC20(_name, _symbol) {\n _mint(msg.sender, initialSupply);\n }\n \n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"4-compile-the-contract",children:"4. Compile the contract"}),"\n",(0,t.jsx)(n.p,{children:"Press the green play button at the top to compile the contract."}),"\n",(0,t.jsx)(n.h2,{id:"5-deploy-the-contract",children:"5. Deploy the contract"}),"\n",(0,t.jsxs)(n.p,{children:['Open the deployment tab (this looks like an Ethereum logo with an arrow pointing right).\nMake sure that your environment is set to "Injected Provider", your wallet is connected to the Lisk Sepolia network, and Remix has access to your wallet.\nThen, select the ',(0,t.jsx)(n.code,{children:"MyNFT"})," contract from the deployment dropdown and click the orange ",(0,t.jsx)(n.code,{children:"Deploy"})," button to deploy the contract.\nFinally, confirm the contract deployment in your connected wallet."]}),"\n",(0,t.jsxs)(n.p,{children:["Check the Remix log messages, it should include the contract address.\nPaste this address in BlockScout, to see the contract in the Lisk blockchain explorer: ",(0,t.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x6e8fF2E042c1637a2Da9563763c62362a3bbD712",children:"https://sepolia-blockscout.lisk.com/address/0x6e8fF2E042c1637a2Da9563763c62362a3bbD712"})]}),"\n",(0,t.jsx)(n.h2,{id:"6-verify-the-contract",children:"6. Verify the contract"}),"\n",(0,t.jsx)(n.p,{children:"If you want to interact with your contract on the block explorer, you, or someone else needs to verify it first.\nThe above contract has already been verified, so you should be able to view your version on a block explorer already.\nFor the remainder of this guide, we'll walk through how to verify your contract with Remix on the Lisk Sepolia Testnet."}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["In Remix, rightlick on the contract you wish to verify and select ",(0,t.jsx)(n.code,{children:"Flatten"}),".\nThis will create a new file ",(0,t.jsx)(n.code,{children:"MyToken_flattened.sol"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Now, switch to your ",(0,t.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x6e8fF2E042c1637a2Da9563763c62362a3bbD712",children:"newly deployed contract"})," on ",(0,t.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/",children:"https://sepolia-blockscout.lisk.com/"})]}),"\n",(0,t.jsxs)(n.li,{children:["Go to the contract tabe and click on the blue ",(0,t.jsx)(n.code,{children:"Verify and Publish"})," button.","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"(Optional) Set a license for your contract."}),"\n",(0,t.jsxs)(n.li,{children:["Choose ",(0,t.jsx)(n.code,{children:"Solidity (Single file)"})," as verification method."]}),"\n",(0,t.jsx)(n.li,{children:"Choose the fitting compiler version for your contract."}),"\n",(0,t.jsx)(n.li,{children:"Disable code optimization."}),"\n",(0,t.jsxs)(n.li,{children:["Copy the flattened source code from Remix and paste it into the ",(0,t.jsx)(n.code,{children:"Enter the Solidity Contract Code"})," field."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["Check that all info is correct and click the ",(0,t.jsx)(n.code,{children:"Verify and Publish"})," button, to verify your contract."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Once verified, the code tab will include the \u2705 icon and source code will be viewable."})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>c,a:()=>r});var t=o(7294);const i={},l=t.createContext(i);function r(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/15e9dd0c.da09c7d0.js b/assets/js/15e9dd0c.da09c7d0.js
new file mode 100644
index 000000000..50e19fbd4
--- /dev/null
+++ b/assets/js/15e9dd0c.da09c7d0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[1674],{2888:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var t=o(5893),i=o(1151);const l={title:"Deploying a new ERC-20 token on Lisk",description:"A guide on how to deploy a new ERC-20 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","Fungible token"]},r="How to deploy a new ERC-20 token on Lisk",c={id:"building-on-lisk/token-development/deploy-erc-20",title:"Deploying a new ERC-20 token on Lisk",description:"A guide on how to deploy a new ERC-20 token on Lisk.",source:"@site/docs/building-on-lisk/token-development/deploy-erc-20.md",sourceDirName:"building-on-lisk/token-development",slug:"/building-on-lisk/token-development/deploy-erc-20",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Deploying a new ERC-20 token on Lisk",description:"A guide on how to deploy a new ERC-20 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","Fungible token"]},sidebar:"documentationSidebar",previous:{title:"Overview",permalink:"/lisk-documentation/token-development"},next:{title:"Deploying a new ERC-721 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721"}},s={},a=[{value:"1. Open Remix",id:"1-open-remix",level:2},{value:"2. Create a new file",id:"2-create-a-new-file",level:2},{value:"3. Copy the example contract",id:"3-copy-the-example-contract",level:2},{value:"4. Compile the contract",id:"4-compile-the-contract",level:2},{value:"5. Deploy the contract",id:"5-deploy-the-contract",level:2},{value:"6. Verify the contract",id:"6-verify-the-contract",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"how-to-deploy-a-new-erc-20-token-on-lisk",children:"How to deploy a new ERC-20 token on Lisk"})}),"\n",(0,t.jsxs)(n.p,{children:["This guide explains how to deploy a new ERC-20 token to Lisk.\nIn case you want to bridge an existing token from Ethereum, please refer to the guide ",(0,t.jsx)(n.a,{href:"../add-token-to-lisk",children:"Bridging an L1 token to Lisk"}),"."]}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["We will use Remix as framework for smart contract development in this guide, but feel free to choose a ",(0,t.jsx)(n.a,{href:"/category/building-on-lisk/deploying-smart-contract",children:"smart contract development framework"})," of your choice to implement your token contract."]})}),"\n",(0,t.jsx)(n.h2,{id:"1-open-remix",children:"1. Open Remix"}),"\n",(0,t.jsxs)(n.p,{children:["Navigate to ",(0,t.jsx)(n.a,{href:"https://remix.ethereum.org",children:"Remix"})," in your browser."]}),"\n",(0,t.jsx)(n.h2,{id:"2-create-a-new-file",children:"2. Create a new file"}),"\n",(0,t.jsxs)(n.p,{children:["Inside the ",(0,t.jsx)(n.code,{children:"contracts"}),' folder, click the \ud83d\udcc4 ("Create new file") button to create a new empty Solidity file.\nYou can name this file whatever you\'d like, e.g., ',(0,t.jsx)(n.code,{children:"MyToken.sol"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"3-copy-the-example-contract",children:"3. Copy the example contract"}),"\n",(0,t.jsx)(n.p,{children:"Copy the following example contract into your new file:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";\n\ncontract MyToken is ERC20 {\n constructor(string memory _name, string memory _symbol, uint256 initialSupply) ERC20(_name, _symbol) {\n _mint(msg.sender, initialSupply);\n }\n \n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"4-compile-the-contract",children:"4. Compile the contract"}),"\n",(0,t.jsxs)(n.p,{children:["Please double-check that the compiler version of the Remix IDE is matching with the compiler version mentioned in the smart contract: ",(0,t.jsx)(n.code,{children:"pragma solidity ^0.8.28;"}),"."]}),"\n",(0,t.jsx)(n.p,{children:"Press the green play button at the top to compile the contract."}),"\n",(0,t.jsx)(n.h2,{id:"5-deploy-the-contract",children:"5. Deploy the contract"}),"\n",(0,t.jsxs)(n.p,{children:["Open the ",(0,t.jsx)(n.code,{children:"Deploy & run transactions"}),' tab (this looks like an Ethereum logo with an arrow pointing right).\nMake sure that your environment is set to "Injected Provider", your wallet is connected to the Lisk or Lisk Sepolia network, and Remix has access to your wallet.\nThen, select the ',(0,t.jsx)(n.code,{children:"MyToken"})," contract from the deployment dropdown and deploy it with the parameters of your choice, for example:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Name: MyToken"}),"\n",(0,t.jsx)(n.li,{children:"Symbol: MYT"}),"\n",(0,t.jsx)(n.li,{children:"InitalSupply: 1000000000000000000000"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Click on the orange ",(0,t.jsx)(n.code,{children:"Deploy"})," button to deploy the contract.\nFinally, confirm the contract deployment in your connected wallet."]}),"\n",(0,t.jsxs)(n.p,{children:["Check the Remix log messages; they should include the contract address.\nPaste this address in BlockScout, to see the contract in the Lisk blockchain explorer: ",(0,t.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x6e8fF2E042c1637a2Da9563763c62362a3bbD712",children:"https://sepolia-blockscout.lisk.com/address/0x6e8fF2E042c1637a2Da9563763c62362a3bbD712"})]}),"\n",(0,t.jsx)(n.h2,{id:"6-verify-the-contract",children:"6. Verify the contract"}),"\n",(0,t.jsx)(n.p,{children:"If you want to interact with your contract on the block explorer, you, or someone else needs to verify it first.\nThe above contract has already been verified, so you should be able to view your version on a block explorer already.\nFor the remainder of this guide, we'll walk through how to verify your contract with Remix on the Lisk Sepolia Testnet."}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["In Remix, rightlick on the contract you wish to verify and select ",(0,t.jsx)(n.code,{children:"Flatten"}),".\nThis will create a new file ",(0,t.jsx)(n.code,{children:"MyToken_flattened.sol"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Now, switch to your ",(0,t.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x6e8fF2E042c1637a2Da9563763c62362a3bbD712",children:"newly deployed contract"})," on ",(0,t.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/",children:"https://sepolia-blockscout.lisk.com/"})]}),"\n",(0,t.jsxs)(n.li,{children:["Go to the contract tab and click on the blue ",(0,t.jsx)(n.code,{children:"Verify and Publish"})," button.","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"(Optional) Set a license for your contract."}),"\n",(0,t.jsxs)(n.li,{children:["Choose ",(0,t.jsx)(n.code,{children:"Solidity (Single file)"})," as the verification method."]}),"\n",(0,t.jsx)(n.li,{children:"Choose the fitting compiler version for your contract."}),"\n",(0,t.jsx)(n.li,{children:"Disable code optimization."}),"\n",(0,t.jsxs)(n.li,{children:["Copy the flattened source code from Remix and paste it into the ",(0,t.jsx)(n.code,{children:"Enter the Solidity Contract Code"})," field."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["Check that all info is correct and click the ",(0,t.jsx)(n.code,{children:"Verify and Publish"})," button, to verify your contract."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Once verified, the code tab will include the \u2705 icon, and the source code will be viewable."})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>c,a:()=>r});var t=o(7294);const i={},l=t.createContext(i);function r(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1b8354b2.352b6455.js b/assets/js/1b8354b2.352b6455.js
new file mode 100644
index 000000000..7e95f0a48
--- /dev/null
+++ b/assets/js/1b8354b2.352b6455.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[1475],{6904:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var i=t(5893),s=t(1151);const o={title:"Overview",slug:"/token-development",description:"An introduction into and ERC token standards and token development on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","ERC-721","ERC-1155","NFT","Fungible token","Hybrid token"]},r="Token development",l={id:"building-on-lisk/token-development/overview",title:"Overview",description:"An introduction into and ERC token standards and token development on Lisk.",source:"@site/docs/building-on-lisk/token-development/overview.md",sourceDirName:"building-on-lisk/token-development",slug:"/token-development",permalink:"/lisk-documentation/token-development",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Overview",slug:"/token-development",description:"An introduction into and ERC token standards and token development on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","ERC-721","ERC-1155","NFT","Fungible token","Hybrid token"]},sidebar:"documentationSidebar",previous:{title:"Token development",permalink:"/lisk-documentation/category/building-on-lisk/token-development"},next:{title:"Deploying a new ERC-20 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20"}},a={},d=[{value:"ERC token standards",id:"erc-token-standards",level:2},{value:"ERC-20",id:"erc-20",level:2},{value:"Guides",id:"guides",level:3},{value:"Further reading",id:"further-reading",level:3},{value:"ERC-721",id:"erc-721",level:2},{value:"Guides",id:"guides-1",level:3},{value:"Further reading",id:"further-reading-1",level:3},{value:"ERC-1155",id:"erc-1155",level:2},{value:"Guides",id:"guides-2",level:3},{value:"Further reading",id:"further-reading-2",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"token-development",children:"Token development"})}),"\n",(0,i.jsxs)(n.p,{children:["This page is intended for token issuers who wish to create a new ERC-20 contract on Lisk.\nIt includes an explanation of ERCs, a summary of the most important token standards, and examples of how to deploy these tokens on Lisk.\nIn case you already have a token deployed on the Ethereum network, and wish to bridge it to Lisk, please refer to the guide ",(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/add-token-to-lisk",children:"Bridging an L1 token to Lisk"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"erc-token-standards",children:"ERC token standards"}),"\n",(0,i.jsxs)(n.p,{children:["A standard interface allows any tokens on Ethereum to be re-used by other applications: from wallets to decentralized exchanges.\n",(0,i.jsx)(n.strong,{children:"ERCs"}),"(Ethereum Request for Comments) are a set of application-level standards and conventions, including contract standards such as token standards (ERC-20), name registries (ERC-137), URI schemes, library/package formats, and wallet formats for the Ethereum blockchain."]}),"\n",(0,i.jsx)(n.p,{children:"Following the most popular ERC token standards when creating a new token has several benefits:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Increased security:"})," Let your contract inherit from heavily audited and reviewed implementations of the standard, mitigating the possibility of bugs greatly."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"High application compatibility:"})," Most applications only support the most popular ERC token standards. By following these standards, you ensure your token will be compatible with most external applications like wallets or decentralized exchanges."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Great documentation:"})," Benefit from the vast number of tutorials and guides that are available to develop ERC-compliant tokens."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["ERCs are a subcategory of ",(0,i.jsx)(n.strong,{children:"EIPs"}),"(Ethereum Improvement Proposals).\nNew EIPs are added following the process outlined in ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1",children:"EIP-1"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Here's the full list of ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/erc",children:"ERC proposals"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"A summary of some interesting ERC token standards can be found below."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#erc-20",children:"ERC-20"}),": the most widespread token standard for fungible tokens, albeit somewhat limited by its simplicity."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#erc-721",children:"ERC-721"}),": the most popular token standard for non-fungible tokens, often used for collectibles and games."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#erc-1155",children:"ERC-1155"}),": a standard for multi-tokens, allowing for a single contract to represent multiple fungible and non-fungible tokens, along with batched operations for increased gas efficiency."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"erc-20",children:"ERC-20"}),"\n",(0,i.jsxs)(n.p,{children:["The most widespread token standard for fungible tokens.\nAny token is exactly equal to any other token; no tokens have special rights or behavior associated with them.\nThis makes ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-20",children:"ERC-20"})," tokens useful for things like a medium of exchange currency, voting rights, staking, and more."]}),"\n",(0,i.jsx)(n.h3,{id:"guides",children:"Guides"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20",children:"How to deploy a new ERC-20 token on Lisk"})}),"\n",(0,i.jsx)(n.h3,{id:"further-reading",children:"Further reading"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/tutorials/understand-the-erc-20-token-smart-contract/",children:"Understand the ERC-20 token smart contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-20",children:"ERC-20 EIP"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc20",children:"OpenZeppelin: ERC-20 API"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol",children:"OpenZeppelin: ERC-20 contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://solidity-by-example.org/app/erc20/",children:"Solidity by example: ERC-20"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/standards/tokens/erc-20/",children:"Ethereum Docs: ERC-20"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.alchemy.com/overviews/erc20-solidity",children:"Alchemy: Complete guide to ERC-20"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"erc-721",children:"ERC-721"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-721",children:"ERC-721"})," is a standard for representing ownership of non-fungible tokens.\nNon-fungible tokens(NFTs) are used to represent unique objects like real estate or collectibles, where some items are valued more than others due to their usefulness, rarity, or other individual characteristics."]}),"\n",(0,i.jsx)(n.p,{children:"To represent these unique features onchain, the ERC-721 includes metadata properties that offer information about the token's specific features, such as the title, the creator, and an image preview."}),"\n",(0,i.jsx)(n.h3,{id:"guides-1",children:"Guides"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721",children:"How to deploy a new ERC-721 token on Lisk"})}),"\n",(0,i.jsx)(n.h3,{id:"further-reading-1",children:"Further reading"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/standards/tokens/erc-721/",children:"Ethereum Docs: ERC-721"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-721",children:"ERC-721 EIP"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc721",children:"OpenZeppelin: ERC-721 API"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol",children:"OpenZeppelin: ERC-721 contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://solidity-by-example.org/app/erc721/",children:"Solidity by example: ERC721"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/tutorials/how-to-implement-an-erc721-market/",children:"How to implement an ERC-721 market"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"erc-1155",children:"ERC-1155"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1155",children:"ERC-1155"})," is a standard interface for contracts that manage multiple token types.\nThe distinctive feature of ERC-1155 is that it uses a single smart contract to represent multiple tokens at once.\nA single deployed contract may include any combination of fungible tokens, non-fungible tokens or other configurations (e.g. semi-fungible tokens)."]}),"\n",(0,i.jsxs)(n.p,{children:["This is why its ",(0,i.jsx)(n.code,{children:"balanceOf"})," function differs from ERC-20\u2019s:\nit has an additional ",(0,i.jsx)(n.code,{children:"id"})," argument for the identifier of the token that you want to query the balance of.\nERC-1155 accounts have a distinct balance for each token id; non-fungible tokens are implemented by simply minting a single one of them."]}),"\n",(0,i.jsx)(n.p,{children:"This approach leads to massive gas savings for projects that require multiple tokens.\nInstead of deploying a new contract for each token type, a single ERC-1155 token contract can hold the entire system state, reducing deployment costs and complexity."}),"\n",(0,i.jsx)(n.h3,{id:"guides-2",children:"Guides"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-1155",children:"How to deploy a new ERC-1155 token on Lisk"})}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"Please note that there is currently less ecosystem support for ERC-1155 as compared with ERC-20 or ERC-721."})}),"\n",(0,i.jsx)(n.h3,{id:"further-reading-2",children:"Further reading"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/standards/tokens/erc-1155/",children:"Ethereum Docs: ERC-1155"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1155",children:"ERC-1155 EIP"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc1155",children:"OpenZeppelin: ERC-1155 API"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol",children:"OpenZeppelin: ERC-1155 contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://solidity-by-example.org/app/erc1155/",children:"Solidity by example: ERC1155"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>r});var i=t(7294);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1b8354b2.7d0d0492.js b/assets/js/1b8354b2.7d0d0492.js
deleted file mode 100644
index cc43ee381..000000000
--- a/assets/js/1b8354b2.7d0d0492.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[1475],{6904:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var i=t(5893),s=t(1151);const o={title:"Overview",slug:"/token-development",description:"An introduction into and ERC token standards and token development on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","ERC-721","ERC-1155","NFT","Fungible token","Hybrid token"]},r="Token development",l={id:"building-on-lisk/token-development/overview",title:"Overview",description:"An introduction into and ERC token standards and token development on Lisk.",source:"@site/docs/building-on-lisk/token-development/overview.md",sourceDirName:"building-on-lisk/token-development",slug:"/token-development",permalink:"/lisk-documentation/token-development",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Overview",slug:"/token-development",description:"An introduction into and ERC token standards and token development on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-20","ERC-721","ERC-1155","NFT","Fungible token","Hybrid token"]},sidebar:"documentationSidebar",previous:{title:"Token development",permalink:"/lisk-documentation/category/building-on-lisk/token-development"},next:{title:"Deploying a new ERC-20 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20"}},a={},d=[{value:"ERC token standards",id:"erc-token-standards",level:2},{value:"ERC-20",id:"erc-20",level:2},{value:"Guides",id:"guides",level:3},{value:"Further reading",id:"further-reading",level:3},{value:"ERC-721",id:"erc-721",level:2},{value:"Guides",id:"guides-1",level:3},{value:"Further reading",id:"further-reading-1",level:3},{value:"ERC-1155",id:"erc-1155",level:2},{value:"Guides",id:"guides-2",level:3},{value:"Further reading",id:"further-reading-2",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"token-development",children:"Token development"})}),"\n",(0,i.jsxs)(n.p,{children:["This page is intended for token issuers who wish to create a new ERC-20 contract on Lisk.\nIt includes an explanation of ERCs, a summary of the most important token standards and examples of how to deploy these tokens on Lisk.\nIn case you already have a token deployed on the Ethereum network, and wish to bridge it to Lisk, please refer to the guide ",(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/add-token-to-lisk",children:"Bridging an L1 token to Lisk"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"erc-token-standards",children:"ERC token standards"}),"\n",(0,i.jsxs)(n.p,{children:["A standard interface allows any tokens on Ethereum to be re-used by other applications: from wallets to decentralized exchanges.\n",(0,i.jsx)(n.strong,{children:"ERCs"}),"(= Ethereum Request for Comments) are a set of application-level standards and conventions, including contract standards such as token standards (ERC-20), name registries (ERC-137), URI schemes, library/package formats, and wallet formats for the Ethereum blockchain."]}),"\n",(0,i.jsx)(n.p,{children:"Following the most popular ERC token standards when creating a new token has several benefits:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Increased security:"})," Let your contract inherit from heavily audited and reviewed implementations of the standard, mitigating the possibility of bugs greatly."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"High application compatibility:"})," Most applications only support the most popular ERC token standards. By following these standars you ensure your token will be compatible with most external application like wallets or decentralized exchanges."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Great documentation:"})," Benefit from the vast amount of tutorials and guides that are available to develop ERC compliant tokens."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["ERCs are a subcategory of ",(0,i.jsx)(n.strong,{children:"EIPs"}),"(= Ethereum Improvement Proposals).\nNew EIPs are added following the process outlined in ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1",children:"EIP-1"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The full list of ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/erc",children:"ERC proposals"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"A summary of some interesting ERC tokens standars can be found below."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#erc-20",children:"ERC-20"}),": the most widespread token standard for fungible tokens, albeit somewhat limited by its simplicity."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#erc-721",children:"ERC-721"}),": the most popular token standard for non-fungible tokens, often used for collectibles and games."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#erc-1155",children:"ERC-1155"}),": a standard for multi-tokens, allowing for a single contract to represent multiple fungible and non-fungible tokens, along with batched operations for increased gas efficiency."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"erc-20",children:"ERC-20"}),"\n",(0,i.jsxs)(n.p,{children:["The most widespread token standard for fungible tokens.\nAny token is exactly equal to any other token; no tokens have special rights or behavior associated with them.\nThis makes ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-20",children:"ERC-20"})," tokens useful for things like a medium of exchange currency, voting rights, staking, and more."]}),"\n",(0,i.jsx)(n.h3,{id:"guides",children:"Guides"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20",children:"How to deploy a new ERC-20 token on Lisk"})}),"\n",(0,i.jsx)(n.h3,{id:"further-reading",children:"Further reading"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/tutorials/understand-the-erc-20-token-smart-contract/",children:"Understand the ERC-20 token smart contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-20",children:"ERC-20 EIP"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc20",children:"OpenZeppelin: ERC-20 API"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol",children:"OpenZeppelin: ERC-20 contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://solidity-by-example.org/app/erc20/",children:"Solidity by example: ERC-20"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/standards/tokens/erc-20/",children:"Ethereum Docs: ERC-20"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.alchemy.com/overviews/erc20-solidity",children:"Alchemy: Complete guide to ERC-20"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"erc-721",children:"ERC-721"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-721",children:"ERC-721"})," is a standard for representing ownership of non-fungible tokens.\nNon-fungible tokens(NFTs) are used to represent unique objects like real estate or collectibles, where some items are valued more than others, due to their usefulness, rarity, or other individual characteristics."]}),"\n",(0,i.jsx)(n.p,{children:"To represent these unique features on chain, the ERC-721 includes metadata properties that offer information about the token's specific features, such as the title, the creator, and an image preview."}),"\n",(0,i.jsx)(n.h3,{id:"guides-1",children:"Guides"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721",children:"How to deploy a new ERC-721 token on Lisk"})}),"\n",(0,i.jsx)(n.h3,{id:"further-reading-1",children:"Further reading"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/standards/tokens/erc-721/",children:"Ethereum Docs: ERC-721"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-721",children:"ERC-721 EIP"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc721",children:"OpenZeppelin: ERC-721 API"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol",children:"OpenZeppelin: ERC-721 contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://solidity-by-example.org/app/erc721/",children:"Solidity by example: ERC721"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/tutorials/how-to-implement-an-erc721-market/",children:"How to implement an ERC-721 market"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"erc-1155",children:"ERC-1155"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1155",children:"ERC-1155"})," is a standard interface for contracts that manage multiple token types.\nThe distinctive feature of ERC-1155 is that it uses a single smart contract to represent multiple tokens at once.\nA single deployed contract may include any combination of fungible tokens, non-fungible tokens or other configurations (e.g. semi-fungible tokens)."]}),"\n",(0,i.jsxs)(n.p,{children:["This is why its ",(0,i.jsx)(n.code,{children:"balanceOf"})," function differs from ERC-20\u2019s:\nit has an additional ",(0,i.jsx)(n.code,{children:"id"})," argument for the identifier of the token that you want to query the balance of.\nERC-1155 accounts have a distinct balance for each token id; non-fungible tokens are implemented by simply minting a single one of them."]}),"\n",(0,i.jsx)(n.p,{children:"This approach leads to massive gas savings for projects that require multiple tokens.\nInstead of deploying a new contract for each token type, a single ERC-1155 token contract can hold the entire system state, reducing deployment costs and complexity."}),"\n",(0,i.jsx)(n.h3,{id:"guides-2",children:"Guides"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-1155",children:"How to deploy a new ERC-1155 token on Lisk"})}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"Please note that there is currently less ecosystem support for ERC-1155 as compared with ERC-20 or ERC-721."})}),"\n",(0,i.jsx)(n.h3,{id:"further-reading-2",children:"Further reading"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://ethereum.org/en/developers/docs/standards/tokens/erc-1155/",children:"Ethereum Docs: ERC-1155"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1155",children:"ERC-1155 EIP"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc1155",children:"OpenZeppelin: ERC-1155 API"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol",children:"OpenZeppelin: ERC-1155 contract"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://solidity-by-example.org/app/erc1155/",children:"Solidity by example: ERC1155"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>r});var i=t(7294);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/72da674a.3d811a8e.js b/assets/js/72da674a.3d811a8e.js
deleted file mode 100644
index d9efc8459..000000000
--- a/assets/js/72da674a.3d811a8e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[9479],{9196:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var o=t(5893),i=t(1151);const l={title:"Deploying a new ERC-1155 token on Lisk",description:"A guide on how to deploy a new ERC-1155 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-1155","Hybrid token","Multi token"]},r="How to deploy a new ERC-1155 token on Lisk",c={id:"building-on-lisk/token-development/deploy-erc-1155",title:"Deploying a new ERC-1155 token on Lisk",description:"A guide on how to deploy a new ERC-1155 token on Lisk.",source:"@site/docs/building-on-lisk/token-development/deploy-erc-1155.md",sourceDirName:"building-on-lisk/token-development",slug:"/building-on-lisk/token-development/deploy-erc-1155",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-1155",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Deploying a new ERC-1155 token on Lisk",description:"A guide on how to deploy a new ERC-1155 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-1155","Hybrid token","Multi token"]},sidebar:"documentationSidebar",previous:{title:"Deploying a new ERC-721 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721"},next:{title:"Accessing real-world data with Oracles",permalink:"/lisk-documentation/building-on-lisk/use-oracle-data"}},s={},a=[{value:"1. Open Remix",id:"1-open-remix",level:2},{value:"2. Create a new file",id:"2-create-a-new-file",level:2},{value:"3. Copy the example contract",id:"3-copy-the-example-contract",level:2},{value:"4. Compile the contract",id:"4-compile-the-contract",level:2},{value:"5. Deploy the contract",id:"5-deploy-the-contract",level:2},{value:"6. Verify the contract",id:"6-verify-the-contract",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"how-to-deploy-a-new-erc-1155-token-on-lisk",children:"How to deploy a new ERC-1155 token on Lisk"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We will use Remix as framework for smart contract development in this guide, but feel free to choose a ",(0,o.jsx)(n.a,{href:"/category/building-on-lisk/deploying-smart-contract",children:"smart contract development framework"})," of your choice to implement your token contract."]})}),"\n",(0,o.jsx)(n.h2,{id:"1-open-remix",children:"1. Open Remix"}),"\n",(0,o.jsxs)(n.p,{children:["Navigate to ",(0,o.jsx)(n.a,{href:"https://remix.ethereum.org",children:"Remix"})," in your browser."]}),"\n",(0,o.jsx)(n.h2,{id:"2-create-a-new-file",children:"2. Create a new file"}),"\n",(0,o.jsxs)(n.p,{children:['Click the \ud83d\udcc4 ("Create new file") button to create a new empty Solidity file.\nYou can name this file whatever you\'d like, e.g. ',(0,o.jsx)(n.code,{children:"MyItems.sol"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"3-copy-the-example-contract",children:"3. Copy the example contract"}),"\n",(0,o.jsx)(n.p,{children:"Copy the following example contract into your new file:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";\n\ncontract MyItems is ERC1155 {\n uint256 public constant GOLD = 0;\n uint256 public constant SILVER = 1;\n uint256 public constant THORS_HAMMER = 2;\n uint256 public constant SWORD = 3;\n uint256 public constant SHIELD = 4;\n\n constructor() ERC1155("https://game.example/api/item/{id}.json") {\n _mint(msg.sender, GOLD, 10**18, "");\n _mint(msg.sender, SILVER, 10**27, "");\n _mint(msg.sender, THORS_HAMMER, 1, "");\n _mint(msg.sender, SWORD, 10**9, "");\n _mint(msg.sender, SHIELD, 10**9, "");\n }\n}\n'})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsx)(n.p,{children:"Gold, Silver,Sword and shield are fungible tokens whilst Thor\u2019s Hammer is a non-fungible token as we minted only one."})}),"\n",(0,o.jsxs)(n.p,{children:["An URI pointing to the JSON metadata of the different items/ tokens needs to be specified in the constructor, see ",(0,o.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc1155#ERC1155",children:"ERC-1155 contract API"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The URI can include the string ",(0,o.jsx)(n.code,{children:"{id}"})," which clients must replace with the actual token ID, in lowercase hexadecimal (with no 0x prefix) and leading zero padded to 64 hex characters.\nThe URI MUST point to a JSON file that conforms to the ",(0,o.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1155",children:"ERC-1155 Metadata URI JSON Schema"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For token ID 2 and uri ",(0,o.jsx)(n.code,{children:"https://game.example/api/item/{id}.json"})," clients would replace ",(0,o.jsx)(n.code,{children:"{id}"})," with ",(0,o.jsx)(n.code,{children:"0000000000000000000000000000000000000000000000000000000000000002"})," to retrieve JSON at ",(0,o.jsx)(n.code,{children:"https://game.example/api/item/0000000000000000000000000000000000000000000000000000000000000002.json"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"The JSON document for token ID 2 might look something like:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-json",children:'{\n "name": "Thor\'s hammer",\n "description": "Mj\xf6lnir, the legendary hammer of the Norse god of thunder.",\n "image": "https://game.example/item-id-8u5h2m.png",\n "strength": 20\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["For more information about the metadata JSON Schema, check out the ",(0,o.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema",children:"ERC-1155 Metadata URI JSON Schema"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"4-compile-the-contract",children:"4. Compile the contract"}),"\n",(0,o.jsx)(n.p,{children:"Press the green play button at the top to compile the contract."}),"\n",(0,o.jsx)(n.h2,{id:"5-deploy-the-contract",children:"5. Deploy the contract"}),"\n",(0,o.jsxs)(n.p,{children:['Open the deployment tab (this looks like an Ethereum logo with an arrow pointing right).\nMake sure that your environment is set to "Injected Provider", your wallet is connected to Lisk or Lisk Sepolia network, and Remix has access to your wallet.\nThen, select the ',(0,o.jsx)(n.code,{children:"MyItems"})," contract from the deployment dropdown and click the orange ",(0,o.jsx)(n.code,{children:"Deploy"})," button to deploy the contract.\nFinally, confirm the contract deployment in your connected wallet."]}),"\n",(0,o.jsxs)(n.p,{children:["Check the Remix log messages, it should include the contract address.\nPaste this address in BlockScout, to see the contract in the Lisk blockchain explorer: ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x8b2f45e810F539647e70fBCd6441B73d332Ef1A0",children:"https://sepolia-blockscout.lisk.com/address/0x8b2f45e810F539647e70fBCd6441B73d332Ef1A0"})]}),"\n",(0,o.jsx)(n.h2,{id:"6-verify-the-contract",children:"6. Verify the contract"}),"\n",(0,o.jsx)(n.p,{children:"If you want to interact with your contract on the block explorer, you, or someone else needs to verify it first.\nThe above contract has already been verified, so you should be able to view your version on a block explorer already.\nFor the remainder of this guide, we'll walk through how to verify your contract with Remix on the Lisk Sepolia Testnet."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["In Remix, rightlick on the contract you wish to verify and select ",(0,o.jsx)(n.code,{children:"Flatten"}),".\nThis will create a new file ",(0,o.jsx)(n.code,{children:"MyItems_flattened.sol"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Now, switch to your ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x8b2f45e810F539647e70fBCd6441B73d332Ef1A0",children:"newly deployed contract"})," on ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/",children:"https://sepolia-blockscout.lisk.com/"})]}),"\n",(0,o.jsxs)(n.li,{children:["Go to the ",(0,o.jsx)(n.code,{children:"Contract"})," tab and click on the blue ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button.","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"(Optional) Set a license for your contract."}),"\n",(0,o.jsxs)(n.li,{children:["Choose ",(0,o.jsx)(n.code,{children:"Solidity (Single file)"})," as verification method."]}),"\n",(0,o.jsx)(n.li,{children:"Choose the fitting compiler version for your contract."}),"\n",(0,o.jsx)(n.li,{children:"Disable code optimization."}),"\n",(0,o.jsxs)(n.li,{children:["Copy the flattened source code from Remix and paste it into the ",(0,o.jsx)(n.code,{children:"Enter the Solidity Contract Code"})," field."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Check that all info is correct and click the ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button, to verify your contract."]}),"\n",(0,o.jsx)(n.p,{children:"Once verified, the code tab will include the \u2705 icon and source code will be viewable."}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>r});var o=t(7294);const i={},l=o.createContext(i);function r(e){const n=o.useContext(l);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/72da674a.a55d2f52.js b/assets/js/72da674a.a55d2f52.js
new file mode 100644
index 000000000..a659db4ff
--- /dev/null
+++ b/assets/js/72da674a.a55d2f52.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[9479],{9196:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>a});var o=t(5893),i=t(1151);const c={title:"Deploying a new ERC-1155 token on Lisk",description:"A guide on how to deploy a new ERC-1155 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-1155","Hybrid token","Multi token"]},l="How to deploy a new ERC-1155 token on Lisk",r={id:"building-on-lisk/token-development/deploy-erc-1155",title:"Deploying a new ERC-1155 token on Lisk",description:"A guide on how to deploy a new ERC-1155 token on Lisk.",source:"@site/docs/building-on-lisk/token-development/deploy-erc-1155.md",sourceDirName:"building-on-lisk/token-development",slug:"/building-on-lisk/token-development/deploy-erc-1155",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-1155",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Deploying a new ERC-1155 token on Lisk",description:"A guide on how to deploy a new ERC-1155 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-1155","Hybrid token","Multi token"]},sidebar:"documentationSidebar",previous:{title:"Deploying a new ERC-721 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721"},next:{title:"Accessing real-world data with Oracles",permalink:"/lisk-documentation/building-on-lisk/use-oracle-data"}},s={},a=[{value:"1. Open Remix",id:"1-open-remix",level:2},{value:"2. Create a new file",id:"2-create-a-new-file",level:2},{value:"3. Copy the example contract",id:"3-copy-the-example-contract",level:2},{value:"4. Compile the contract",id:"4-compile-the-contract",level:2},{value:"5. Deploy the contract",id:"5-deploy-the-contract",level:2},{value:"6. Verify the contract",id:"6-verify-the-contract",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"how-to-deploy-a-new-erc-1155-token-on-lisk",children:"How to deploy a new ERC-1155 token on Lisk"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We will use Remix as framework for smart contract development in this guide, but feel free to choose a ",(0,o.jsx)(n.a,{href:"/category/building-on-lisk/deploying-smart-contract",children:"smart contract development framework"})," of your choice to implement your token contract."]})}),"\n",(0,o.jsx)(n.h2,{id:"1-open-remix",children:"1. Open Remix"}),"\n",(0,o.jsxs)(n.p,{children:["Navigate to ",(0,o.jsx)(n.a,{href:"https://remix.ethereum.org",children:"Remix"})," in your browser."]}),"\n",(0,o.jsx)(n.h2,{id:"2-create-a-new-file",children:"2. Create a new file"}),"\n",(0,o.jsxs)(n.p,{children:["Inside the ",(0,o.jsx)(n.code,{children:"contracts"}),' folder, click the \ud83d\udcc4 ("Create new file") button to create a new empty Solidity file.\nYou can name this file whatever you\'d like, e.g., ',(0,o.jsx)(n.code,{children:"MyItems.sol"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"3-copy-the-example-contract",children:"3. Copy the example contract"}),"\n",(0,o.jsx)(n.p,{children:"Copy the following example contract into your new file:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";\n\ncontract MyItems is ERC1155 {\n uint256 public constant GOLD = 0;\n uint256 public constant SILVER = 1;\n uint256 public constant THORS_HAMMER = 2;\n uint256 public constant SWORD = 3;\n uint256 public constant SHIELD = 4;\n\n constructor() ERC1155("https://game.example/api/item/{id}.json") {\n _mint(msg.sender, GOLD, 10**18, "");\n _mint(msg.sender, SILVER, 10**27, "");\n _mint(msg.sender, THORS_HAMMER, 1, "");\n _mint(msg.sender, SWORD, 10**9, "");\n _mint(msg.sender, SHIELD, 10**9, "");\n }\n}\n'})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsx)(n.p,{children:"Gold, Silver,Sword and shield are fungible tokens whilst Thor\u2019s Hammer is a non-fungible token as we minted only one."})}),"\n",(0,o.jsxs)(n.p,{children:["An URI pointing to the JSON metadata of the different items/ tokens needs to be specified in the constructor, see ",(0,o.jsx)(n.a,{href:"https://docs.openzeppelin.com/contracts/3.x/api/token/erc1155#ERC1155",children:"ERC-1155 contract API"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The URI can include the string ",(0,o.jsx)(n.code,{children:"{id}"}),", which clients must replace with the actual token ID, in lowercase hexadecimal (with no 0x prefix) and leading zero-padded to 64 hex characters.\nThe URI MUST point to a JSON file that conforms to the ",(0,o.jsx)(n.a,{href:"https://eips.ethereum.org/EIPS/eip-1155",children:"ERC-1155 Metadata URI JSON Schema"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For token ID 2 and uri ",(0,o.jsx)(n.code,{children:"https://game.example/api/item/{id}.json"})," clients would replace ",(0,o.jsx)(n.code,{children:"{id}"})," with ",(0,o.jsx)(n.code,{children:"0000000000000000000000000000000000000000000000000000000000000002"})," to retrieve JSON at ",(0,o.jsx)(n.code,{children:"https://game.example/api/item/0000000000000000000000000000000000000000000000000000000000000002.json"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"The JSON document for token ID 2 might look something like:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-json",children:'{\n "name": "Thor\'s hammer",\n "description": "Mj\xf6lnir, the legendary hammer of the Norse god of thunder.",\n "image": "https://game.example/item-id-8u5h2m.png",\n "strength": 20\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["For more information about the metadata JSON Schema, check out the ",(0,o.jsx)(n.a,{href:"https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema",children:"ERC-1155 Metadata URI JSON Schema"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"4-compile-the-contract",children:"4. Compile the contract"}),"\n",(0,o.jsxs)(n.p,{children:["Please double-check that the compiler version of the Remix IDE is matching with the compiler version mentioned in the smart contract: ",(0,o.jsx)(n.code,{children:"pragma solidity ^0.8.28;"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Press the green play button at the top to compile the contract."}),"\n",(0,o.jsx)(n.h2,{id:"5-deploy-the-contract",children:"5. Deploy the contract"}),"\n",(0,o.jsxs)(n.p,{children:["Open the ",(0,o.jsx)(n.code,{children:"Deploy & run transactions"}),' tab (this looks like an Ethereum logo with an arrow pointing right).\nMake sure that your environment is set to "Injected Provider", your wallet is connected to Lisk or Lisk Sepolia network, and Remix has access to your wallet.\nThen, select the ',(0,o.jsx)(n.code,{children:"MyItems"})," contract from the deployment dropdown and click the orange ",(0,o.jsx)(n.code,{children:"Deploy"})," button to deploy the contract.\nFinally, confirm the contract deployment in your connected wallet."]}),"\n",(0,o.jsxs)(n.p,{children:["Check the Remix log messages; they should include the contract address.\nPaste this address in BlockScout, to see the contract in the Lisk blockchain explorer: ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x8b2f45e810F539647e70fBCd6441B73d332Ef1A0",children:"https://sepolia-blockscout.lisk.com/address/0x8b2f45e810F539647e70fBCd6441B73d332Ef1A0"})]}),"\n",(0,o.jsx)(n.h2,{id:"6-verify-the-contract",children:"6. Verify the contract"}),"\n",(0,o.jsx)(n.p,{children:"If you want to interact with your contract on the block explorer, you, or someone else needs to verify it first.\nThe above contract has already been verified, so you should be able to view your version on a block explorer already.\nFor the remainder of this guide, we'll walk you through how to verify your contract with Remix on the Lisk Sepolia Testnet."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["In Remix, rightlick on the contract you wish to verify and select ",(0,o.jsx)(n.code,{children:"Flatten"}),".\nThis will create a new file ",(0,o.jsx)(n.code,{children:"MyItems_flattened.sol"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Now, switch to your ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x8b2f45e810F539647e70fBCd6441B73d332Ef1A0",children:"newly deployed contract"})," on ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/",children:"https://sepolia-blockscout.lisk.com/"})]}),"\n",(0,o.jsxs)(n.li,{children:["Go to the ",(0,o.jsx)(n.code,{children:"Contract"})," tab and click on the blue ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button.","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"(Optional) Set a license for your contract."}),"\n",(0,o.jsxs)(n.li,{children:["Choose ",(0,o.jsx)(n.code,{children:"Solidity (Single file)"})," as the verification method."]}),"\n",(0,o.jsx)(n.li,{children:"Choose the fitting compiler version for your contract."}),"\n",(0,o.jsx)(n.li,{children:"Disable code optimization."}),"\n",(0,o.jsxs)(n.li,{children:["Copy the flattened source code from Remix and paste it into the ",(0,o.jsx)(n.code,{children:"Enter the Solidity Contract Code"})," field."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Check that all info is correct and click the ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button, to verify your contract."]}),"\n",(0,o.jsx)(n.p,{children:"Once verified, the code tab will include the \u2705 icon, and the source code will be viewable."}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>r,a:()=>l});var o=t(7294);const i={},c=o.createContext(i);function l(e){const n=o.useContext(c);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),o.createElement(c.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/a29e3505.36bbf501.js b/assets/js/a29e3505.36bbf501.js
new file mode 100644
index 000000000..f530fe210
--- /dev/null
+++ b/assets/js/a29e3505.36bbf501.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[1169],{4556:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});var o=t(5893),i=t(1151);const l={title:"Deploying a new ERC-721 token on Lisk",description:"A guide on how to deploy a new ERC-721 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-721","NFT"]},c="How to deploy a new ERC-721 token on Lisk",r={id:"building-on-lisk/token-development/deploy-erc-721",title:"Deploying a new ERC-721 token on Lisk",description:"A guide on how to deploy a new ERC-721 token on Lisk.",source:"@site/docs/building-on-lisk/token-development/deploy-erc-721.md",sourceDirName:"building-on-lisk/token-development",slug:"/building-on-lisk/token-development/deploy-erc-721",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Deploying a new ERC-721 token on Lisk",description:"A guide on how to deploy a new ERC-721 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-721","NFT"]},sidebar:"documentationSidebar",previous:{title:"Deploying a new ERC-20 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20"},next:{title:"Deploying a new ERC-1155 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-1155"}},s={},d=[{value:"1. Open Remix",id:"1-open-remix",level:2},{value:"2. Create a new file",id:"2-create-a-new-file",level:2},{value:"3. Copy the example contract",id:"3-copy-the-example-contract",level:2},{value:"4. Compile the contract",id:"4-compile-the-contract",level:2},{value:"5. Deploy the contract",id:"5-deploy-the-contract",level:2},{value:"6. Verify the contract",id:"6-verify-the-contract",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"how-to-deploy-a-new-erc-721-token-on-lisk",children:"How to deploy a new ERC-721 token on Lisk"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We will use Remix as framework for smart contract development in this guide, but feel free to choose a ",(0,o.jsx)(n.a,{href:"/category/building-on-lisk/deploying-smart-contract",children:"smart contract development framework"})," of your choice to implement your token contract."]})}),"\n",(0,o.jsx)(n.h2,{id:"1-open-remix",children:"1. Open Remix"}),"\n",(0,o.jsxs)(n.p,{children:["Navigate to ",(0,o.jsx)(n.a,{href:"https://remix.ethereum.org",children:"Remix"})," in your browser."]}),"\n",(0,o.jsx)(n.h2,{id:"2-create-a-new-file",children:"2. Create a new file"}),"\n",(0,o.jsxs)(n.p,{children:["Inside the ",(0,o.jsx)(n.code,{children:"contracts"}),' folder, click the \ud83d\udcc4 ("Create new file") button to create a new empty Solidity file.\nYou can name this file whatever you\'d like, e.g., ',(0,o.jsx)(n.code,{children:"MyNFT.sol"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"3-copy-the-example-contract",children:"3. Copy the example contract"}),"\n",(0,o.jsx)(n.p,{children:"Copy the following example contract into your new file:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport "@openzeppelin/contracts/token/ERC721/ERC721.sol";\n\ncontract MyNFT is ERC721 {\n uint256 public currentTokenId;\n\n constructor() ERC721("My NFT", "MNFT") {}\n\n function mint(address recipient) public returns (uint256) {\n uint256 newItemId = ++currentTokenId;\n _safeMint(recipient, newItemId);\n return newItemId;\n }\n}\n'})}),"\n",(0,o.jsx)(n.h2,{id:"4-compile-the-contract",children:"4. Compile the contract"}),"\n",(0,o.jsxs)(n.p,{children:["Please double-check that the compiler version of the Remix IDE is matching with the compiler version mentioned in the smart contract: ",(0,o.jsx)(n.code,{children:"pragma solidity ^0.8.28;"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Press the green play button at the top to compile the contract."}),"\n",(0,o.jsx)(n.h2,{id:"5-deploy-the-contract",children:"5. Deploy the contract"}),"\n",(0,o.jsxs)(n.p,{children:["Open the ",(0,o.jsx)(n.code,{children:"Deploy & run transactions"}),' tab (this looks like an Ethereum logo with an arrow pointing right).\nMake sure that your environment is set to "Injected Provider", your wallet is connected to Lisk or Lisk Sepolia network, and Remix has access to your wallet.\nThen, select the ',(0,o.jsx)(n.code,{children:"MyNFT"})," contract from the deployment dropdown and click the orange ",(0,o.jsx)(n.code,{children:"Deploy"})," button to deploy the contract and confirm the contract deployment in your connected wallet."]}),"\n",(0,o.jsxs)(n.p,{children:["Check the Remix log messages; they should include the contract address.\nPaste this address in BlockScout, to see the contract in the Lisk blockchain explorer: ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x73e7a94dD5760d862F6FD9f8ea5D4245Bb143446",children:"https://sepolia-blockscout.lisk.com/address/0x73e7a94dD5760d862F6FD9f8ea5D4245Bb143446"})]}),"\n",(0,o.jsx)(n.h2,{id:"6-verify-the-contract",children:"6. Verify the contract"}),"\n",(0,o.jsx)(n.p,{children:"If you want to interact with your contract on the block explorer, you, or someone else needs to verify it first.\nThe above contract has already been verified, so you should be able to view your version on a block explorer already.\nFor the remainder of this guide, we'll walk through how to verify your contract with Remix on the Lisk Sepolia Testnet."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["In Remix, rightlick on the contract you wish to verify and select ",(0,o.jsx)(n.code,{children:"Flatten"}),".\nThis will create a new file ",(0,o.jsx)(n.code,{children:"MyNFT_flattened.sol"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Now, switch to your ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x73e7a94dD5760d862F6FD9f8ea5D4245Bb143446",children:"newly deployed contract"})," on ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/",children:"https://sepolia-blockscout.lisk.com/"})]}),"\n",(0,o.jsxs)(n.li,{children:["Go to the contract tab and click on the blue ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button.","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"(Optional) Set a license for your contract."}),"\n",(0,o.jsxs)(n.li,{children:["Choose ",(0,o.jsx)(n.code,{children:"Solidity (Single file)"})," as the verification method."]}),"\n",(0,o.jsx)(n.li,{children:"Choose the fitting compiler version for your contract."}),"\n",(0,o.jsx)(n.li,{children:"Disable code optimization."}),"\n",(0,o.jsxs)(n.li,{children:["Copy the flattened source code from Remix and paste it into the ",(0,o.jsx)(n.code,{children:"Enter the Solidity Contract Code"})," field."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["Check that all info is correct and click the ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button, to verify your contract."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Once verified, the code tab will include the \u2705 icon, and the source code will be viewable."})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>r,a:()=>c});var o=t(7294);const i={},l=o.createContext(i);function c(e){const n=o.useContext(l);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),o.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/a29e3505.63fab58d.js b/assets/js/a29e3505.63fab58d.js
deleted file mode 100644
index e9c4e2c9f..000000000
--- a/assets/js/a29e3505.63fab58d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklisk_docs=self.webpackChunklisk_docs||[]).push([[1169],{4556:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var o=t(5893),i=t(1151);const l={title:"Deploying a new ERC-721 token on Lisk",description:"A guide on how to deploy a new ERC-721 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-721","NFT"]},r="How to deploy a new ERC-721 token on Lisk",c={id:"building-on-lisk/token-development/deploy-erc-721",title:"Deploying a new ERC-721 token on Lisk",description:"A guide on how to deploy a new ERC-721 token on Lisk.",source:"@site/docs/building-on-lisk/token-development/deploy-erc-721.md",sourceDirName:"building-on-lisk/token-development",slug:"/building-on-lisk/token-development/deploy-erc-721",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-721",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{title:"Deploying a new ERC-721 token on Lisk",description:"A guide on how to deploy a new ERC-721 token on Lisk.",keywords:["Lisk","Token development","Deploy token","ERC","EIP","ERC-721","NFT"]},sidebar:"documentationSidebar",previous:{title:"Deploying a new ERC-20 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-20"},next:{title:"Deploying a new ERC-1155 token on Lisk",permalink:"/lisk-documentation/building-on-lisk/token-development/deploy-erc-1155"}},s={},a=[{value:"1. Open Remix",id:"1-open-remix",level:2},{value:"2. Create a new file",id:"2-create-a-new-file",level:2},{value:"3. Copy the example contract",id:"3-copy-the-example-contract",level:2},{value:"4. Compile the contract",id:"4-compile-the-contract",level:2},{value:"5. Deploy the contract",id:"5-deploy-the-contract",level:2},{value:"6. Verify the contract",id:"6-verify-the-contract",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"how-to-deploy-a-new-erc-721-token-on-lisk",children:"How to deploy a new ERC-721 token on Lisk"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We will use Remix as framework for smart contract development in this guide, but feel free to choose a ",(0,o.jsx)(n.a,{href:"/category/building-on-lisk/deploying-smart-contract",children:"smart contract development framework"})," of your choice to implement your token contract."]})}),"\n",(0,o.jsx)(n.h2,{id:"1-open-remix",children:"1. Open Remix"}),"\n",(0,o.jsxs)(n.p,{children:["Navigate to ",(0,o.jsx)(n.a,{href:"https://remix.ethereum.org",children:"Remix"})," in your browser."]}),"\n",(0,o.jsx)(n.h2,{id:"2-create-a-new-file",children:"2. Create a new file"}),"\n",(0,o.jsxs)(n.p,{children:['Click the \ud83d\udcc4 ("Create new file") button to create a new empty Solidity file.\nYou can name this file whatever you\'d like, e.g. ',(0,o.jsx)(n.code,{children:"MyNFT.sol"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"3-copy-the-example-contract",children:"3. Copy the example contract"}),"\n",(0,o.jsx)(n.p,{children:"Copy the following example contract into your new file:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-solidity",children:'// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport "@openzeppelin/contracts/token/ERC721/ERC721.sol";\n\ncontract MyNFT is ERC721 {\n uint256 public currentTokenId;\n\n constructor() ERC721("My NFT", "MNFT") {}\n\n function mint(address recipient) public returns (uint256) {\n uint256 newItemId = ++currentTokenId;\n _safeMint(recipient, newItemId);\n return newItemId;\n }\n}\n'})}),"\n",(0,o.jsx)(n.h2,{id:"4-compile-the-contract",children:"4. Compile the contract"}),"\n",(0,o.jsx)(n.p,{children:"Press the green play button at the top to compile the contract."}),"\n",(0,o.jsx)(n.h2,{id:"5-deploy-the-contract",children:"5. Deploy the contract"}),"\n",(0,o.jsxs)(n.p,{children:['Open the deployment tab (this looks like an Ethereum logo with an arrow pointing right).\nMake sure that your environment is set to "Injected Provider", your wallet is connected to Lisk or Lisk Sepolia network, and Remix has access to your wallet.\nThen, select the ',(0,o.jsx)(n.code,{children:"MyNFT"})," contract from the deployment dropdown and click the orange ",(0,o.jsx)(n.code,{children:"transact"})," button to deploy the contract and confirm the contract deployment in your connected wallet."]}),"\n",(0,o.jsxs)(n.p,{children:["Check the Remix log messages, it should include the contract address.\nPaste this address in BlockScout, to see the contract in the Lisk blockchain explorer: ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x73e7a94dD5760d862F6FD9f8ea5D4245Bb143446",children:"https://sepolia-blockscout.lisk.com/address/0x73e7a94dD5760d862F6FD9f8ea5D4245Bb143446"})]}),"\n",(0,o.jsx)(n.h2,{id:"6-verify-the-contract",children:"6. Verify the contract"}),"\n",(0,o.jsx)(n.p,{children:"If you want to interact with your contract on the block explorer, you, or someone else needs to verify it first.\nThe above contract has already been verified, so you should be able to view your version on a block explorer already.\nFor the remainder of this guide, we'll walk through how to verify your contract with Remix on the Lisk Sepolia Testnet."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["In Remix, rightlick on the contract you wish to verify and select ",(0,o.jsx)(n.code,{children:"Flatten"}),".\nThis will create a new file ",(0,o.jsx)(n.code,{children:"MyNFT_flattened.sol"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Now, switch to your ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/address/0x73e7a94dD5760d862F6FD9f8ea5D4245Bb143446",children:"newly deployed contract"})," on ",(0,o.jsx)(n.a,{href:"https://sepolia-blockscout.lisk.com/",children:"https://sepolia-blockscout.lisk.com/"})]}),"\n",(0,o.jsxs)(n.li,{children:["Go to the contract tabe and click on the blue ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"(Optional) Set a license for your contract."}),"\n",(0,o.jsxs)(n.li,{children:["Choose ",(0,o.jsx)(n.code,{children:"Solidity (Single file)"})," as verification method."]}),"\n",(0,o.jsx)(n.li,{children:"Choose the fitting compiler version for your contract."}),"\n",(0,o.jsx)(n.li,{children:"Disable code optimization."}),"\n",(0,o.jsxs)(n.li,{children:["Copy the flattened source code from Remix and paste it into the ",(0,o.jsx)(n.code,{children:"Enter the Solidity Contract Code"})," field."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["Check that all info is correct and click the ",(0,o.jsx)(n.code,{children:"Verify and Publish"})," button, to verify your contract."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Once verified, the code tab will include the \u2705 icon and source code will be viewable."})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>r});var o=t(7294);const i={},l=o.createContext(i);function r(e){const n=o.useContext(l);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.4a9fc95d.js b/assets/js/runtime~main.d6abd738.js
similarity index 68%
rename from assets/js/runtime~main.4a9fc95d.js
rename to assets/js/runtime~main.d6abd738.js
index 4cbd053da..26ff6a606 100644
--- a/assets/js/runtime~main.4a9fc95d.js
+++ b/assets/js/runtime~main.d6abd738.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,f,d,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={exports:{}};return c[e].call(f.exports,f,f.exports,r),f.exports}r.m=c,e=[],r.O=(a,f,d,b)=>{if(!f){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,d,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({199:"87599bfc",251:"17bdee9f",270:"ac1f69a1",336:"039b21c9",763:"57d22669",895:"4984adb1",936:"a8c021bd",1004:"c141421f",1068:"0eafa1eb",1169:"a29e3505",1425:"d25e57c7",1475:"1b8354b2",1674:"15e9dd0c",1679:"484b75f3",1817:"8b0f9f4a",2e3:"746da5eb",2009:"356cc13d",2086:"ad9ad9bc",2184:"6ce766bb",2375:"d9983e98",2634:"857902ca",2672:"5f139d3e",2861:"af13aafd",2940:"554c6b45",2961:"3d9a73a5",3080:"2e7d4620",3085:"1f391b9e",3181:"1543b51c",3206:"f8409a7e",3346:"2edd81d0",3567:"8bcd76a4",3629:"aba21aa0",3751:"3720c009",4195:"c4f5d8e4",4318:"b2059c63",4368:"a94703ab",4943:"1cb7678f",5108:"c4f0bf58",5182:"dbb9021c",5379:"f7633811",5469:"9636b8fc",5712:"516f4631",5860:"e36629f4",5980:"a7456010",6493:"f1b37e9d",6554:"d1f45362",6633:"b04fc419",7005:"55bfc4dc",7111:"e556ce07",7195:"79ab6a57",7414:"393be207",7468:"7aeaf29f",7800:"f9cb542d",7918:"17896441",7920:"1a4e3797",7939:"8d261ba2",8040:"56867589",8438:"66705cd6",8518:"a7bd4aaa",9468:"d38dfec1",9474:"7d66d443",9479:"72da674a",9661:"5e95c892",9711:"6d987312",9799:"6541bca2",9817:"14eb3368",9924:"df203c0f"}[e]||e)+"."+{199:"56fef14e",251:"c496340e",270:"5ad841c9",336:"a5643ced",763:"75b8551a",895:"169dcb20",936:"88b55272",1004:"17ccd098",1068:"87e14b39",1169:"63fab58d",1425:"eb663ee0",1426:"1068e9cf",1475:"7d0d0492",1674:"c5585342",1679:"e3b8f8b8",1772:"62066f4b",1817:"36978a97",2e3:"4b90117e",2009:"b6e6f8ec",2086:"75a2b350",2184:"e5dba7bf",2375:"a6c2634a",2634:"dbe57faf",2672:"999b6adb",2861:"4853dcfd",2916:"c89dd23b",2940:"901448da",2961:"63bc3e8b",3080:"77df2e2c",3085:"ec24c1b6",3181:"dd4a8aa6",3206:"2dafcd95",3346:"7f3a5bcc",3567:"66b95353",3629:"dbcdef91",3751:"a733d788",4195:"f93369b0",4318:"ca2fd32f",4368:"2c3e87bd",4943:"29bf7ea7",5108:"da214e48",5182:"3d19323d",5379:"b84d747c",5469:"b7b29e48",5712:"15847de2",5860:"8c7a6131",5980:"0a80f2f1",6493:"05b3837c",6554:"2de20a4b",6633:"e302d68c",6945:"5ba1f545",7005:"aa790f1d",7111:"9453157e",7195:"7e6fa7db",7414:"b714faaa",7468:"59b66f81",7800:"99092022",7918:"db73a423",7920:"7bd995e7",7939:"9a83f19c",8040:"dc19b2e3",8438:"220c2b34",8518:"67c0499a",8894:"5fb01b92",9468:"b38d477e",9474:"3073cec2",9479:"3d811a8e",9661:"f983f3d6",9711:"53f96550",9799:"d6dc7eff",9817:"769b1e1b",9924:"11c34b2b"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},b="lisk-docs:",r.l=(e,a,f,c)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/lisk-documentation/",r.gca=function(e){return e={17896441:"7918",56867589:"8040","87599bfc":"199","17bdee9f":"251",ac1f69a1:"270","039b21c9":"336","57d22669":"763","4984adb1":"895",a8c021bd:"936",c141421f:"1004","0eafa1eb":"1068",a29e3505:"1169",d25e57c7:"1425","1b8354b2":"1475","15e9dd0c":"1674","484b75f3":"1679","8b0f9f4a":"1817","746da5eb":"2000","356cc13d":"2009",ad9ad9bc:"2086","6ce766bb":"2184",d9983e98:"2375","857902ca":"2634","5f139d3e":"2672",af13aafd:"2861","554c6b45":"2940","3d9a73a5":"2961","2e7d4620":"3080","1f391b9e":"3085","1543b51c":"3181",f8409a7e:"3206","2edd81d0":"3346","8bcd76a4":"3567",aba21aa0:"3629","3720c009":"3751",c4f5d8e4:"4195",b2059c63:"4318",a94703ab:"4368","1cb7678f":"4943",c4f0bf58:"5108",dbb9021c:"5182",f7633811:"5379","9636b8fc":"5469","516f4631":"5712",e36629f4:"5860",a7456010:"5980",f1b37e9d:"6493",d1f45362:"6554",b04fc419:"6633","55bfc4dc":"7005",e556ce07:"7111","79ab6a57":"7195","393be207":"7414","7aeaf29f":"7468",f9cb542d:"7800","1a4e3797":"7920","8d261ba2":"7939","66705cd6":"8438",a7bd4aaa:"8518",d38dfec1:"9468","7d66d443":"9474","72da674a":"9479","5e95c892":"9661","6d987312":"9711","6541bca2":"9799","14eb3368":"9817",df203c0f:"9924"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((f,b)=>d=e[a]=[f,b]));f.push(d[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var b=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,b,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,a,f,b,d,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={exports:{}};return c[e].call(f.exports,f,f.exports,r),f.exports}r.m=c,e=[],r.O=(a,f,b,d)=>{if(!f){var c=1/0;for(i=0;i=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,b,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&b&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(d,c),d},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({199:"87599bfc",251:"17bdee9f",270:"ac1f69a1",336:"039b21c9",763:"57d22669",895:"4984adb1",936:"a8c021bd",1004:"c141421f",1068:"0eafa1eb",1169:"a29e3505",1425:"d25e57c7",1475:"1b8354b2",1674:"15e9dd0c",1679:"484b75f3",1817:"8b0f9f4a",2e3:"746da5eb",2009:"356cc13d",2086:"ad9ad9bc",2184:"6ce766bb",2375:"d9983e98",2634:"857902ca",2672:"5f139d3e",2861:"af13aafd",2940:"554c6b45",2961:"3d9a73a5",3080:"2e7d4620",3085:"1f391b9e",3181:"1543b51c",3206:"f8409a7e",3346:"2edd81d0",3567:"8bcd76a4",3629:"aba21aa0",3751:"3720c009",4195:"c4f5d8e4",4318:"b2059c63",4368:"a94703ab",4943:"1cb7678f",5108:"c4f0bf58",5182:"dbb9021c",5379:"f7633811",5469:"9636b8fc",5712:"516f4631",5860:"e36629f4",5980:"a7456010",6493:"f1b37e9d",6554:"d1f45362",6633:"b04fc419",7005:"55bfc4dc",7111:"e556ce07",7195:"79ab6a57",7414:"393be207",7468:"7aeaf29f",7800:"f9cb542d",7918:"17896441",7920:"1a4e3797",7939:"8d261ba2",8040:"56867589",8438:"66705cd6",8518:"a7bd4aaa",9468:"d38dfec1",9474:"7d66d443",9479:"72da674a",9661:"5e95c892",9711:"6d987312",9799:"6541bca2",9817:"14eb3368",9924:"df203c0f"}[e]||e)+"."+{199:"56fef14e",251:"c496340e",270:"5ad841c9",336:"a5643ced",763:"75b8551a",895:"169dcb20",936:"88b55272",1004:"17ccd098",1068:"87e14b39",1169:"36bbf501",1425:"eb663ee0",1426:"1068e9cf",1475:"352b6455",1674:"da09c7d0",1679:"e3b8f8b8",1772:"62066f4b",1817:"36978a97",2e3:"4b90117e",2009:"b6e6f8ec",2086:"75a2b350",2184:"e5dba7bf",2375:"a6c2634a",2634:"dbe57faf",2672:"999b6adb",2861:"4853dcfd",2916:"c89dd23b",2940:"901448da",2961:"63bc3e8b",3080:"77df2e2c",3085:"ec24c1b6",3181:"dd4a8aa6",3206:"2dafcd95",3346:"7f3a5bcc",3567:"66b95353",3629:"dbcdef91",3751:"a733d788",4195:"f93369b0",4318:"ca2fd32f",4368:"2c3e87bd",4943:"29bf7ea7",5108:"da214e48",5182:"3d19323d",5379:"b84d747c",5469:"b7b29e48",5712:"15847de2",5860:"8c7a6131",5980:"0a80f2f1",6493:"05b3837c",6554:"2de20a4b",6633:"e302d68c",6945:"5ba1f545",7005:"aa790f1d",7111:"9453157e",7195:"7e6fa7db",7414:"b714faaa",7468:"59b66f81",7800:"99092022",7918:"db73a423",7920:"7bd995e7",7939:"9a83f19c",8040:"dc19b2e3",8438:"220c2b34",8518:"67c0499a",8894:"5fb01b92",9468:"b38d477e",9474:"3073cec2",9479:"a55d2f52",9661:"f983f3d6",9711:"53f96550",9799:"d6dc7eff",9817:"769b1e1b",9924:"11c34b2b"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},d="lisk-docs:",r.l=(e,a,f,c)=>{if(b[e])b[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var d=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/lisk-documentation/",r.gca=function(e){return e={17896441:"7918",56867589:"8040","87599bfc":"199","17bdee9f":"251",ac1f69a1:"270","039b21c9":"336","57d22669":"763","4984adb1":"895",a8c021bd:"936",c141421f:"1004","0eafa1eb":"1068",a29e3505:"1169",d25e57c7:"1425","1b8354b2":"1475","15e9dd0c":"1674","484b75f3":"1679","8b0f9f4a":"1817","746da5eb":"2000","356cc13d":"2009",ad9ad9bc:"2086","6ce766bb":"2184",d9983e98:"2375","857902ca":"2634","5f139d3e":"2672",af13aafd:"2861","554c6b45":"2940","3d9a73a5":"2961","2e7d4620":"3080","1f391b9e":"3085","1543b51c":"3181",f8409a7e:"3206","2edd81d0":"3346","8bcd76a4":"3567",aba21aa0:"3629","3720c009":"3751",c4f5d8e4:"4195",b2059c63:"4318",a94703ab:"4368","1cb7678f":"4943",c4f0bf58:"5108",dbb9021c:"5182",f7633811:"5379","9636b8fc":"5469","516f4631":"5712",e36629f4:"5860",a7456010:"5980",f1b37e9d:"6493",d1f45362:"6554",b04fc419:"6633","55bfc4dc":"7005",e556ce07:"7111","79ab6a57":"7195","393be207":"7414","7aeaf29f":"7468",f9cb542d:"7800","1a4e3797":"7920","8d261ba2":"7939","66705cd6":"8438",a7bd4aaa:"8518",d38dfec1:"9468","7d66d443":"9474","72da674a":"9479","5e95c892":"9661","6d987312":"9711","6541bca2":"9799","14eb3368":"9817",df203c0f:"9924"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,f)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>b=e[a]=[f,d]));f.push(b[2]=d);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var d=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+c+")",t.name="ChunkLoadError",t.type=d,t.request=c,b[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var b,d,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(a&&a(f);nBridged Token Addresses | Lisk Documentation
-
+
diff --git a/building-on-lisk/add-token-to-lisk.html b/building-on-lisk/add-token-to-lisk.html
index deb22ae92..45ac041a9 100644
--- a/building-on-lisk/add-token-to-lisk.html
+++ b/building-on-lisk/add-token-to-lisk.html
@@ -5,7 +5,7 @@
Introduction | Lisk Documentation
-
+
diff --git a/building-on-lisk/add-token-to-lisk/custom-token.html b/building-on-lisk/add-token-to-lisk/custom-token.html
index 3d3173367..eb4382767 100644
--- a/building-on-lisk/add-token-to-lisk/custom-token.html
+++ b/building-on-lisk/add-token-to-lisk/custom-token.html
@@ -5,7 +5,7 @@
Deploying a custom token | Lisk Documentation
-
+
diff --git a/building-on-lisk/add-token-to-lisk/standard-token.html b/building-on-lisk/add-token-to-lisk/standard-token.html
index 2ff80073e..c0e0f93fc 100644
--- a/building-on-lisk/add-token-to-lisk/standard-token.html
+++ b/building-on-lisk/add-token-to-lisk/standard-token.html
@@ -5,7 +5,7 @@
Deploying a standard token | Lisk Documentation
-
+
diff --git a/building-on-lisk/deploying-smart-contract/with-Foundry.html b/building-on-lisk/deploying-smart-contract/with-Foundry.html
index b8f72b496..0bf303aaf 100644
--- a/building-on-lisk/deploying-smart-contract/with-Foundry.html
+++ b/building-on-lisk/deploying-smart-contract/with-Foundry.html
@@ -5,7 +5,7 @@
... with Foundry | Lisk Documentation
-
+
diff --git a/building-on-lisk/deploying-smart-contract/with-Hardhat.html b/building-on-lisk/deploying-smart-contract/with-Hardhat.html
index 34f1efa98..552936e1d 100644
--- a/building-on-lisk/deploying-smart-contract/with-Hardhat.html
+++ b/building-on-lisk/deploying-smart-contract/with-Hardhat.html
@@ -5,7 +5,7 @@
... with Hardhat | Lisk Documentation
-
+
diff --git a/building-on-lisk/deploying-smart-contract/with-thirdweb.html b/building-on-lisk/deploying-smart-contract/with-thirdweb.html
index 90087ef78..a5ee81d3a 100644
--- a/building-on-lisk/deploying-smart-contract/with-thirdweb.html
+++ b/building-on-lisk/deploying-smart-contract/with-thirdweb.html
@@ -5,7 +5,7 @@
... with thirdweb | Lisk Documentation
-
+
diff --git a/building-on-lisk/interacting-with-the-blockchain/ethers.html b/building-on-lisk/interacting-with-the-blockchain/ethers.html
index 638431e59..d4fb05a05 100644
--- a/building-on-lisk/interacting-with-the-blockchain/ethers.html
+++ b/building-on-lisk/interacting-with-the-blockchain/ethers.html
@@ -5,7 +5,7 @@
...with ethers.js | Lisk Documentation
-
+
diff --git a/building-on-lisk/interacting-with-the-blockchain/viem.html b/building-on-lisk/interacting-with-the-blockchain/viem.html
index 3c6f87760..04d91651b 100644
--- a/building-on-lisk/interacting-with-the-blockchain/viem.html
+++ b/building-on-lisk/interacting-with-the-blockchain/viem.html
@@ -5,7 +5,7 @@
...with viem | Lisk Documentation
-
+
diff --git a/building-on-lisk/interacting-with-the-blockchain/web3.html b/building-on-lisk/interacting-with-the-blockchain/web3.html
index d492eadda..0c2cb3708 100644
--- a/building-on-lisk/interacting-with-the-blockchain/web3.html
+++ b/building-on-lisk/interacting-with-the-blockchain/web3.html
@@ -5,7 +5,7 @@
...with web3.js | Lisk Documentation
-
+
diff --git a/building-on-lisk/migration-guide.html b/building-on-lisk/migration-guide.html
index b49e116bf..ba57cdf50 100644
--- a/building-on-lisk/migration-guide.html
+++ b/building-on-lisk/migration-guide.html
@@ -5,7 +5,7 @@
Lisk L1->L2 migration guide | Lisk Documentation
-
+
diff --git a/building-on-lisk/run-a-lisk-node.html b/building-on-lisk/run-a-lisk-node.html
index 307a778c0..0057e364d 100644
--- a/building-on-lisk/run-a-lisk-node.html
+++ b/building-on-lisk/run-a-lisk-node.html
@@ -5,7 +5,7 @@
Running a Lisk Node | Lisk Documentation
-
+
diff --git a/building-on-lisk/token-development/deploy-erc-1155.html b/building-on-lisk/token-development/deploy-erc-1155.html
index 8271136a1..285d65849 100644
--- a/building-on-lisk/token-development/deploy-erc-1155.html
+++ b/building-on-lisk/token-development/deploy-erc-1155.html
@@ -5,7 +5,7 @@
Deploying a new ERC-1155 token on Lisk | Lisk Documentation
-
+
@@ -14,32 +14,33 @@
Click the 📄 ("Create new file") button to create a new empty Solidity file.
-You can name this file whatever you'd like, e.g. MyItems.sol.
+
Inside the contracts folder, click the 📄 ("Create new file") button to create a new empty Solidity file.
+You can name this file whatever you'd like, e.g., MyItems.sol.
Gold, Silver,Sword and shield are fungible tokens whilst Thor’s Hammer is a non-fungible token as we minted only one.
An URI pointing to the JSON metadata of the different items/ tokens needs to be specified in the constructor, see ERC-1155 contract API.
-
The URI can include the string {id} which clients must replace with the actual token ID, in lowercase hexadecimal (with no 0x prefix) and leading zero padded to 64 hex characters.
+
The URI can include the string {id}, which clients must replace with the actual token ID, in lowercase hexadecimal (with no 0x prefix) and leading zero-padded to 64 hex characters.
The URI MUST point to a JSON file that conforms to the ERC-1155 Metadata URI JSON Schema.
For token ID 2 and uri https://game.example/api/item/{id}.json clients would replace {id} with 0000000000000000000000000000000000000000000000000000000000000002 to retrieve JSON at https://game.example/api/item/0000000000000000000000000000000000000000000000000000000000000002.json.
The JSON document for token ID 2 might look something like:
{ "name":"Thor's hammer", "description":"Mjölnir, the legendary hammer of the Norse god of thunder.", "image":"https://game.example/item-id-8u5h2m.png", "strength":20 }
Please double-check that the compiler version of the Remix IDE is matching with the compiler version mentioned in the smart contract: pragma solidity ^0.8.28;.
Press the green play button at the top to compile the contract.
Open the deployment tab (this looks like an Ethereum logo with an arrow pointing right).
+
Open the Deploy & run transactions tab (this looks like an Ethereum logo with an arrow pointing right).
Make sure that your environment is set to "Injected Provider", your wallet is connected to Lisk or Lisk Sepolia network, and Remix has access to your wallet.
Then, select the MyItems contract from the deployment dropdown and click the orange Deploy button to deploy the contract.
Finally, confirm the contract deployment in your connected wallet.
-
Check the Remix log messages, it should include the contract address.
+
If you want to interact with your contract on the block explorer, you, or someone else needs to verify it first.
The above contract has already been verified, so you should be able to view your version on a block explorer already.
-For the remainder of this guide, we'll walk through how to verify your contract with Remix on the Lisk Sepolia Testnet.
+For the remainder of this guide, we'll walk you through how to verify your contract with Remix on the Lisk Sepolia Testnet.
In Remix, rightlick on the contract you wish to verify and select Flatten.
This will create a new file MyItems_flattened.sol.
@@ -47,7 +48,7 @@
6. Ver
Go to the Contract tab and click on the blue Verify and Publish button.
(Optional) Set a license for your contract.
-
Choose Solidity (Single file) as verification method.
+
Choose Solidity (Single file) as the verification method.
Choose the fitting compiler version for your contract.
Disable code optimization.
Copy the flattened source code from Remix and paste it into the Enter the Solidity Contract Code field.
@@ -57,7 +58,7 @@
6. Ver
Check that all info is correct and click the Verify and Publish button, to verify your contract.
-
Once verified, the code tab will include the ✅ icon and source code will be viewable.
+
Once verified, the code tab will include the ✅ icon, and the source code will be viewable.