Howdy!
My name is Fedor Katurov, I'm a fullstack developer from Siberia.
I develop frontend applications with React, Vue and numerous other frameworks for the most of my time, but I'm also capable of doing Typescript and Golang backend.
diff --git a/200.html b/200.html index 0b05204..4584741 100644 --- a/200.html +++ b/200.html @@ -1,6 +1,6 @@ -
- + \ No newline at end of file diff --git a/404.html b/404.html index 0b05204..4584741 100644 --- a/404.html +++ b/404.html @@ -1,6 +1,6 @@ - - + \ No newline at end of file diff --git a/_payload.js b/_payload.js index 8283eff..56e3a6e 100644 --- a/_payload.js +++ b/_payload.js @@ -1 +1 @@ -export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}]},prerenderedAt:1667469948967} \ No newline at end of file +export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}]},prerenderedAt:1667480025742} \ No newline at end of file diff --git a/api/_content/cache.json b/api/_content/cache.json index 9e79291..bb6435c 100644 --- a/api/_content/cache.json +++ b/api/_content/cache.json @@ -1 +1 @@ -{"generatedAt":1667469954959,"generateTime":73,"contents":[{"_path":"/blockchain/common-typescript-examples","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Common Typescript Examples","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// URL of your node"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://...'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-29d072"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b68cca"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-5263e7"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-b68cca"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c3adee"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// first we need to authorize"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// then we can get wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getCurrentAddressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getTransactionCount"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" gasLimit: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" nonce: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"EthUtil"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"Transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"sign"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"serialize"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"this"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"`0x${"}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'hex'"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"estimateFee"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"asciiToHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"fromWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"())"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"multiply"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"()))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'accountsChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'chainChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"handler"}]},{"type":"element","tag":"span","props":{"class":"ct-5b649c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_watchAsset'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" type: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ERC20'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" options: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" address: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0xb60e8dd61c5d32be8058bb8eb970870f07233155'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'FOO'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"18"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" image: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://foo.io/token-image.svg'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-29d072"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-5263e7"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'FOO successfully added to wallet!'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'Something went wrong.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getChainID"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'eth_chainId'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_switchEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: [{ chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }], "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"switchError"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// This error code indicates that the chain has not been added to MetaMask."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"4902"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_addEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: [{ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" chainName: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'Ropsten Test Network'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" nativeCurrency: { "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" name: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"18"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" rpcUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"], "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" blockExplorerUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://ropsten.etherscan.io'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }] ,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"addError"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// handle \"add\" error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// handle other \"switch\" errors"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-257ab4{color:#79C0FF}.ct-5b649c{color:#C9D1D9}.ct-7e4ae9{color:#79C0FF}.ct-67aa5d{color:#A5D6FF}.ct-c3adee{color:#79C0FF}.ct-5263e7{color:#FFA657}.ct-b68cca{color:#FF7B72}.ct-29d072{color:#D2A8FF}.ct-e10e80{color:#C9D1D9}.ct-eae8ac{color:#FF7B72}.ct-54055d{color:#D2A8FF}.ct-8ae2fc{color:#79C0FF}.ct-78a5db{color:#FF7B72}.ct-8e9ae2{color:#8B949E}.ct-422a59{color:#A5D6FF}.ct-98be25{color:#C9D1D9}.ct-2a2380{color:#C9D1D9}.ct-0b52da{color:#FF7B72}.light .ct-0b52da{color:#859900}.light .ct-2a2380{color:#657B83}.light .ct-98be25{color:#268BD2}.light .ct-422a59{color:#2AA198}.light .ct-8e9ae2{color:#93A1A1}.light .ct-78a5db{color:#073642}.light .ct-8ae2fc{color:#268BD2}.light .ct-54055d{color:#268BD2}.light .ct-eae8ac{color:#073642}.light .ct-e10e80{color:#657B83}.light .ct-29d072{color:#268BD2}.light .ct-b68cca{color:#859900}.light .ct-5263e7{color:#657B83}.light .ct-c3adee{color:#859900}.light .ct-67aa5d{color:#657B83}.light .ct-7e4ae9{color:#859900}.light .ct-5b649c{color:#859900}.light .ct-257ab4{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"connecting-to-node","depth":2,"text":"Connecting to node"},{"id":"getting-wallet-balance","depth":2,"text":"Getting wallet balance"},{"id":"getting-wallet-address","depth":2,"text":"Getting wallet address"},{"id":"sending-transaction","depth":2,"text":"Sending transaction"},{"id":"estimating-transaction-fee","depth":2,"text":"Estimating transaction FEE"},{"id":"subscribing-to-wallet-address-change","depth":2,"text":"Subscribing to wallet address change"},{"id":"watching-network-change","depth":2,"text":"Watching network change"},{"id":"adding-custom-token-to-wallet","depth":2,"text":"Adding custom token to wallet"},{"id":"changing-network-to-custom","depth":2,"text":"Changing network to custom"}]}},"_type":"markdown","_id":"content:Blockchain:Common typescript examples.md","_source":"content","_file":"Blockchain/Common typescript examples.md","_extension":"md"},{"_path":"/blockchain/smart-contracts","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Smart Contracts","description":"For common functions see Common typescript examples.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'web3-eth-contract'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"abi"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"object"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0c16cc"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d924d9"},"children":[{"type":"text","value":"JSON"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0c16cc"},"children":[{"type":"text","value":"parse"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// ABI of contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// address for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ({}) "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// Calling write method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// authorizing with Metamask"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// calling \"store\" store method for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// payload should include `from` address, that matches"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// current user's wallet"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'Parameter'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"send"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" from: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// calling read method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// this method can return data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"retrieve"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// ABI контракта"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// contract address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// account's private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// write-methods requires private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"privateKeyToAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" to: "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"encodeABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" gas: "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({ from: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"signTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"rawTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"requests"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"balanceOf"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getStaked"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"call"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"any"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"[]) "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getWeb3NoAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"BatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"map"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"add"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"execute"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"all"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81ebef"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR_RPC_ENDPOINT_HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR ABI HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR CONTRACT ADDRESS HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"referralProgramContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"events"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"RegisterUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0a0823"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"`| UserRegistered | events | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"boolean"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3cce47"},"children":[{"type":"text","value":"RegisterUserResponseInterface"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"`| ONCE | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0a0823"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3cce47"},"children":[{"type":"text","value":"ErrnoException"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" value: [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"events"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"str"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" address: ["}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'address-1'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'address-2'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//Only get events from specific addresses"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" topics: [] "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//What topics to subscribe to"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'logs'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"nr"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//example options(optional)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// only get events where transfer value was 1000 or 1337"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" value: ["}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'1000'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'1337'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// number | \"earliest\" | \"pending\" | \"latest\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" toBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'latest'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getPastEvents"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'Transfer'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"results"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-3cce47{color:#FFA657}.ct-0a0823{color:#A5D6FF}.ct-81ebef{color:#79C0FF}.ct-4a0f6a{color:#79C0FF}.ct-538bd0{color:#79C0FF}.ct-047000{color:#79C0FF}.ct-307d26{color:#FF7B72}.ct-495eea{color:#8B949E}.ct-3dd077{color:#FFA657}.ct-37c069{color:#D2A8FF}.ct-d924d9{color:#79C0FF}.ct-0c16cc{color:#79C0FF}.ct-427bbc{color:#79C0FF}.ct-60e515{color:#FFA657}.ct-148471{color:#FF7B72}.ct-d6daf9{color:#D2A8FF}.ct-16c265{color:#C9D1D9}.ct-7475e8{color:#FF7B72}.ct-69a21a{color:#A5D6FF}.ct-389197{color:#C9D1D9}.ct-5f84b8{color:#C9D1D9}.ct-a00ecd{color:#FF7B72}.light .ct-a00ecd{color:#859900}.light .ct-5f84b8{color:#657B83}.light .ct-389197{color:#268BD2}.light .ct-69a21a{color:#2AA198}.light .ct-7475e8{color:#073642}.light .ct-16c265{color:#657B83}.light .ct-d6daf9{color:#268BD2}.light .ct-148471{color:#859900}.light .ct-60e515{color:#657B83}.light .ct-427bbc{color:#859900}.light .ct-0c16cc{color:#268BD2}.light .ct-d924d9{color:#657B83}.light .ct-37c069{color:#268BD2}.light .ct-3dd077{color:#657B83}.light .ct-495eea{color:#93A1A1}.light .ct-307d26{color:#073642}.light .ct-047000{color:#268BD2}.light .ct-538bd0{color:#D33682}.light .ct-4a0f6a{color:#859900}.light .ct-81ebef{color:#B58900}.light .ct-0a0823{color:#2AA198}.light .ct-3cce47{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"getting-smart-contract-instance","depth":2,"text":"Getting smart contract instance"},{"id":"executing-contract-method","depth":2,"text":"Executing contract method","children":[{"id":"example-for-metamask-without-private-key","depth":3,"text":"Example for #Metamask without private key"},{"id":"nodejs-and-react-native-example","depth":3,"text":"Node.js and React Native example"},{"id":"calling-a-batch-of-contracts-methods","depth":3,"text":"Calling a batch of contract's methods"}]},{"id":"subscribing-to-smart-contract-events","depth":2,"text":"Subscribing to smart contract events","children":[{"id":"by-accessing-contractevents","depth":3,"text":"By accessing contract.events"},{"id":"with-filtering","depth":3,"text":"With filtering"},{"id":"common-subscribe-method","depth":3,"text":"Common Subscribe method"},{"id":"getting-event-history","depth":3,"text":"Getting event history"}]}]}},"_type":"markdown","_id":"content:Blockchain:Smart contracts.md","_source":"content","_file":"Blockchain/Smart contracts.md","_extension":"md"},{"_path":"/css/automatic-grid-like-masonry-with-pure-css","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Automatic Grid Like Masonry With Pure CSS","description":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-405c56"},"children":[{"type":"text","value":"$cell: "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"250"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-405c56"},"children":[{"type":"text","value":"$gap: "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"20"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".grid"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"display"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"grid"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-template-columns"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70e714"},"children":[{"type":"text","value":"repeat"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"auto-fit"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-70e714"},"children":[{"type":"text","value":"minmax"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$cell"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-f53f0b"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-01f19b"},"children":[{"type":"text","value":"fr"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-auto-rows"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"256"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-auto-flow"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"row"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"dense"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-column-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-row-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".h-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// takes 2 columns"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column-end"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".v-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// takes 2 rows"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row-end"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".full-width"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// height: 1 row"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".top-right"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// height here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// width here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-e36f0d{color:#8B949E}.ct-557b75{color:#79C0FF}.ct-01f19b{color:#FF7B72}.ct-f53f0b{color:#79C0FF}.ct-4998ec{color:#FFA657}.ct-70e714{color:#79C0FF}.ct-745b8d{color:#79C0FF}.ct-2873e9{color:#79C0FF}.ct-de2353{color:#C9D1D9}.ct-6459ce{color:#79C0FF}.ct-7bdc6b{color:#C9D1D9}.ct-47368f{color:#FF7B72}.ct-b0def7{color:#79C0FF}.ct-405c56{color:#FFA657}.light .ct-405c56{color:#657B83}.light .ct-b0def7{color:#D33682}.light .ct-47368f{color:#859900}.light .ct-7bdc6b{color:#657B83}.light .ct-6459ce{color:#93A1A1}.light .ct-de2353{color:#657B83}.light .ct-2873e9{color:#859900}.light .ct-745b8d{color:#657B83}.light .ct-70e714{color:#268BD2}.light .ct-4998ec{color:#657B83}.light .ct-f53f0b{color:#D33682}.light .ct-01f19b{color:#859900}.light .ct-557b75{color:#859900}.light .ct-e36f0d{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"basic-elements-with-double-height-or-width","depth":3,"text":"Basic elements with double height or width"},{"id":"header-that-fills-all-columns","depth":3,"text":"Header, that fills all columns"},{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner","depth":3,"text":"Stamp element, that takes 3 rows in the top right corner"}]}},"_type":"markdown","_id":"content:CSS:Automatic Grid like Masonry with pure CSS.md","_source":"content","_file":"CSS/Automatic Grid like Masonry with pure CSS.md","_extension":"md"},{"_path":"/css/sass-nth-child-iterate-mixin","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Sass Nth Child Iterate Mixin","description":"Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-970948"},"children":[{"type":"text","value":"color-per-child"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"@each"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9944ba"},"children":[{"type":"text","value":"&"}]},{"type":"element","tag":"span","props":{"class":"ct-b1fbc0"},"children":[{"type":"text","value":":nth-child"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"#{"}]},{"type":"element","tag":"span","props":{"class":"ct-33af56"},"children":[{"type":"text","value":"index"}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"(($colors), ($color))}"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-079bc9"},"children":[{"type":"text","value":"color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d733bc"},"children":[{"type":"text","value":".item"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baf813"},"children":[{"type":"text","value":"@include"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-90aa85"},"children":[{"type":"text","value":"color_per_child"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#ded187"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#dbde87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#bade87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#9cde87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#87deaa"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-9ec2d3{color:#79C0FF}.ct-90aa85{color:#D2A8FF}.ct-baf813{color:#FF7B72}.ct-d733bc{color:#79C0FF}.ct-e65013{color:#C9D1D9}.ct-079bc9{color:#79C0FF}.ct-33af56{color:#79C0FF}.ct-b1fbc0{color:#79C0FF}.ct-9944ba{color:#7EE787}.ct-33b3aa{color:#FFA657}.ct-970948{color:#D2A8FF}.ct-8a61ea{color:#C9D1D9}.ct-42be13{color:#FF7B72}.light .ct-42be13{color:#859900}.light .ct-8a61ea{color:#657B83}.light .ct-970948{color:#268BD2}.light .ct-33b3aa{color:#657B83}.light .ct-9944ba{color:#268BD2}.light .ct-b1fbc0{color:#93A1A1}.light .ct-33af56{color:#268BD2}.light .ct-079bc9{color:#859900}.light .ct-e65013{color:#657B83}.light .ct-d733bc{color:#93A1A1}.light .ct-baf813{color:#859900}.light .ct-90aa85{color:#268BD2}.light .ct-9ec2d3{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Sass nth-child iterate mixin.md","_source":"content","_file":"CSS/Sass nth-child iterate mixin.md","_extension":"md"},{"_path":"/css/test-if-browser-supports-css-rules","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Test If Browser Supports CSS Rules","description":"To test if browser supports some #CSS rules, do following:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dc5f6f"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-76b142"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b57c26"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-147719"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": blur(5px);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ee8d8a"},"children":[{"type":"text","value":"can_backdrop"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-34cfd3"},"children":[{"type":"text","value":"-webkit-backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4138a8"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-20b136"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-11eec6"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-92f797"},"children":[{"type":"text","value":"or"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dc5f6f"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-76b142"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b57c26"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@content"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-92f797{color:#79C0FF}.ct-11eec6{color:#FF7B72}.ct-20b136{color:#79C0FF}.ct-4138a8{color:#79C0FF}.ct-34cfd3{color:#79C0FF}.ct-3d523b{color:#C9D1D9}.ct-ee8d8a{color:#D2A8FF}.ct-147719{color:#7EE787}.ct-b57c26{color:#79C0FF}.ct-76b142{color:#79C0FF}.ct-dc5f6f{color:#79C0FF}.ct-c068ad{color:#C9D1D9}.ct-96fe27{color:#FF7B72}.light .ct-96fe27{color:#859900}.light .ct-c068ad{color:#657B83}.light .ct-dc5f6f{color:#859900}.light .ct-76b142{color:#268BD2}.light .ct-b57c26{color:#D33682}.light .ct-147719{color:#268BD2}.light .ct-ee8d8a{color:#268BD2}.light .ct-3d523b{color:#657B83}.light .ct-34cfd3{color:#859900}.light .ct-4138a8{color:#268BD2}.light .ct-20b136{color:#D33682}.light .ct-11eec6{color:#859900}.light .ct-92f797{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Test if browser supports CSS rules.md","_source":"content","_file":"CSS/Test if browser supports CSS rules.md","_extension":"md"},{"_path":"/docker/building-static-pages-with-docker","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Building Static Pages With Docker","description":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:"}]},{"type":"element","tag":"code","props":{"code":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n","language":"Dockerfile"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:"}]},{"type":"element","tag":"code","props":{"code":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n","language":"Dockerfile"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html"}]}]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Building static pages with Docker.md","_source":"content","_file":"Docker/Building static pages with Docker.md","_extension":"md"},{"_path":"/docker/drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Drone Ci","description":"Can be used with Private docker registry to deploy things using #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"drone repo update $1 --trusted=true && drone repo info $1\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"build-master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"plugins/docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"when"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"branch"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"dockerfile"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"Dockerfile"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"tag"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"${DRONE_BRANCH}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_login"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"repo"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"docker_repo"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"drone"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone/drone:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_ID=secret_id"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_SECRET=client_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_SERVER_HOST=drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_USER_CREATE=\"username:user,admin:true\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_SERVER_PROTO=https"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_TLS_AUTOCERT=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GIT_ALWAYS_AUTH=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_LOGS_DEBUG=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_LOGS_TRACE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"./data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"8090:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"drone-agent"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone__agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone/agent:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6b69b"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" DRONE_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6b69b"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" DRONE_TOKEN=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":"drone info"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":"drone repo update "}]},{"type":"element","tag":"span","props":{"class":"ct-7833c9"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-0db3cf"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" --trusted=true "}]},{"type":"element","tag":"span","props":{"class":"ct-b2944d"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" drone repo info "}]},{"type":"element","tag":"span","props":{"class":"ct-7833c9"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-0db3cf"},"children":[{"type":"text","value":"1"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b2944d{color:#FF7B72}.ct-0db3cf{color:#C9D1D9}.ct-7833c9{color:#C9D1D9}.ct-d6b69b{color:#FF7B72}.ct-2bd6cd{color:#A5D6FF}.ct-3abe3a{color:#C9D1D9}.ct-dd7736{color:#7EE787}.light .ct-dd7736{color:#268BD2}.light .ct-3abe3a{color:#657B83}.light .ct-2bd6cd{color:#2AA198}.light .ct-d6b69b{color:#073642}.light .ct-7833c9{color:#859900}.light .ct-0db3cf{color:#268BD2}.light .ct-b2944d{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"pushing-to-private-docker_registry","depth":2,"text":"Pushing to private docker_registry"},{"id":"docker-compose-file-for-drone-ci","depth":2,"text":"Docker-compose file for drone-ci"},{"id":"caching-builds","depth":2,"text":"Caching builds"},{"id":"get-user-info","depth":2,"text":"Get user info"},{"id":"mark-user-as-trusted","depth":2,"text":"Mark user as trusted"}]}},"_type":"markdown","_id":"content:Docker:Drone-ci.md","_source":"content","_file":"Docker/Drone-ci.md","_extension":"md"},{"_path":"/docker/github-pages-with-drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Github Pages With Drone Ci","description":"To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com/My name is Fedor Katurov, I'm a fullstack developer from Siberia.
I develop frontend applications with React, Vue and numerous other frameworks for the most of my time, but I'm also capable of doing Typescript and Golang backend.
My name is Fedor Katurov, I'm a fullstack developer from Siberia.
I develop frontend applications with React, Vue and numerous other frameworks for the most of my time, but I'm also capable of doing Typescript and Golang backend.
If #Metamask extension installed, Web3.givenProvider
is available in global window. You can use Infura or your node instead:
import Web3 from 'web3';// URL of your nodeconst PROVIDER_URL = 'https://...';export const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);
const getBalance = async (address: string) => { return await web3.eth.getBalance(address);}
// first we need to authorizeconst authorize = async () => { await web3.currentProvider.request({ method: 'eth_requestAccounts' });}// then we can get wallet addressconst getCurrentAddressUser = () => { return web3.currentProvider.selectedAddress;}
Sending value
tokens with memo
as value:
const transfer = async ({ from, to, value, memo, privateKey, gasLimit = }) => { const nonce = await web3.eth.getTransactionCount(from); const gasPrice = await web3.eth.getGasPrice(); const rawTx = { from, to, value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')), gasLimit: web3.utils.toHex(gasLimit), gasPrice: web3.utils.toHex(gasPrice), nonce: web3.utils.toHex(nonce), data: memo, }; const privateKeyBuffer = EthUtil.toBuffer(privateKey); const tx = new Transaction(rawTx); tx.sign(privateKeyBuffer); const serializedTx = tx.serialize(); return this.web3.eth.sendSignedTransaction( `0x${serializedTx.toString('hex')}` );}
Useful to get fixed amount of tokens from user with pre-estimated fee.
import { web3 } from '.';const estimateFee = async ({ from, to, value, memo,}) => { const gasPrice = await web3.eth.getGasPrice(); const gasLimit = await web3.eth.estimateGas({ from, to, value: web3.utils.toHex(web3.utils.toWei(value, 'ether')), data: web3.utils.asciiToHex(memo), }).call(); return web3.utils.fromWei( BigInt(gasPrice.toString()) .multiply(BigInt(gasLimit.toString())) .toString() );}
import { web3 } from '.';web3.currentProvider.on('accountsChanged', callback);
ethereum.on('chainChanged', handler:
window.ethereum .request({ method: 'wallet_watchAsset', params: { type: 'ERC20', options: { address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', symbol: 'FOO', decimals: 18, image: 'https://foo.io/token-image.svg', }, }, }) .then((success) => { if (success) { console.log('FOO successfully added to wallet!') } else { throw new Error('Something went wrong.') } }) .catch(console.error)
Checking current chainId:
const getChainID = async () => { return ethereum.request({ method: 'eth_chainId' })}
Asking wallet to change current network:
try { await window.ethereum.request({ method: 'wallet_switchEthereumChain', params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex });} catch (switchError) { // This error code indicates that the chain has not been added to MetaMask. if (error.code === 4902) { try { await window.ethereum.request({ method: 'wallet_addEthereumChain', params: [{ chainId: '0x03', // ropsten chainID (3) in hex chainName: 'Ropsten Test Network', nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 }, rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], blockExplorerUrls: ['https://ropsten.etherscan.io'] }] , }); } catch (addError) { // handle "add" error } } // handle other "switch" errors}
If #Metamask extension installed, Web3.givenProvider
is available in global window. You can use Infura or your node instead:
import Web3 from 'web3';// URL of your nodeconst PROVIDER_URL = 'https://...';export const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);
const getBalance = async (address: string) => { return await web3.eth.getBalance(address);}
// first we need to authorizeconst authorize = async () => { await web3.currentProvider.request({ method: 'eth_requestAccounts' });}// then we can get wallet addressconst getCurrentAddressUser = () => { return web3.currentProvider.selectedAddress;}
Sending value
tokens with memo
as value:
const transfer = async ({ from, to, value, memo, privateKey, gasLimit = }) => { const nonce = await web3.eth.getTransactionCount(from); const gasPrice = await web3.eth.getGasPrice(); const rawTx = { from, to, value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')), gasLimit: web3.utils.toHex(gasLimit), gasPrice: web3.utils.toHex(gasPrice), nonce: web3.utils.toHex(nonce), data: memo, }; const privateKeyBuffer = EthUtil.toBuffer(privateKey); const tx = new Transaction(rawTx); tx.sign(privateKeyBuffer); const serializedTx = tx.serialize(); return this.web3.eth.sendSignedTransaction( `0x${serializedTx.toString('hex')}` );}
Useful to get fixed amount of tokens from user with pre-estimated fee.
import { web3 } from '.';const estimateFee = async ({ from, to, value, memo,}) => { const gasPrice = await web3.eth.getGasPrice(); const gasLimit = await web3.eth.estimateGas({ from, to, value: web3.utils.toHex(web3.utils.toWei(value, 'ether')), data: web3.utils.asciiToHex(memo), }).call(); return web3.utils.fromWei( BigInt(gasPrice.toString()) .multiply(BigInt(gasLimit.toString())) .toString() );}
import { web3 } from '.';web3.currentProvider.on('accountsChanged', callback);
ethereum.on('chainChanged', handler:
window.ethereum .request({ method: 'wallet_watchAsset', params: { type: 'ERC20', options: { address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', symbol: 'FOO', decimals: 18, image: 'https://foo.io/token-image.svg', }, }, }) .then((success) => { if (success) { console.log('FOO successfully added to wallet!') } else { throw new Error('Something went wrong.') } }) .catch(console.error)
Checking current chainId:
const getChainID = async () => { return ethereum.request({ method: 'eth_chainId' })}
Asking wallet to change current network:
try { await window.ethereum.request({ method: 'wallet_switchEthereumChain', params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex });} catch (switchError) { // This error code indicates that the chain has not been added to MetaMask. if (error.code === 4902) { try { await window.ethereum.request({ method: 'wallet_addEthereumChain', params: [{ chainId: '0x03', // ropsten chainID (3) in hex chainName: 'Ropsten Test Network', nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 }, rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], blockExplorerUrls: ['https://ropsten.etherscan.io'] }] , }); } catch (addError) { // handle "add" error } } // handle other "switch" errors}
For common functions see Common typescript examples.
Useful for calling smart contract methods:
import { Contract } from 'web3-eth-contract';import { web3 } from '.';const getContract = (abi: object, address?: string): => { const abiFromJson = JSON.parse( return new web3.eth.Contract(abiFromJson, address);};export default getContract;
Contract has read and write methods. To get a list of methods, you can paste contract address on https://etherscan.io/ ETH or any other service.
Read methods doesn't require spending gas. Write methods cost some amount of gas, hence they will be executed with confirmation from user.
// see example belowimport { getContract } from '.';// ABI of contractconst CONTRACT_ABI = { /* ... */ }; // address for contractconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';export const executeContractMethod = async ({}) => { // getting contract const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS); // Calling write method try { // authorizing with Metamask await web3.currentProvider.request({ method: 'eth_requestAccounts' }); // getting wallet address const addressUser = web3.currentProvider.selectedAddress; // calling "store" store method for contract // payload should include `from` address, that matches // current user's wallet await contract.methods.store(0, 'Parameter').send({ from: addressUser, }); } catch (e) { throw new Error(e); } // calling read method try { // this method can return data const result = await contract.methods.retrieve().call(); } catch (e) { throw new Error(e); }}
// see example belowimport { getContract } from '.';// ABI контрактаconst CONTRACT_ABI = { /* ... */ };// contract addressconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';// getting contractconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);// account's private keyconst privateKey = '...';// write-methods requires private keyconst executeContractMethod = async (val: number) => { const transaction = contract.methods.store(val); const account = web3.eth.accounts.privateKeyToAccount(privateKey); const options = { to: CONTRACT_ADDRESS, data: transaction.encodeABI(), gas: await transaction.estimateGas({ from: account.address }), gasPrice: await web3.eth.getGasPrice(), }; const signed = await web3.eth.accounts.signTransaction( options, privateKey, ); await web3.eth.sendSignedTransaction(signed.rawTransaction!);};
Function calls batch of requests, returning array of results. For example:
const requests = [ contract.method.balanceOf().call, contract.method.getStaked().call ] const result = await makeBatchRequest(request);
const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);const makeBatchRequest = (calls: any[]) => { try { const web3 = getWeb3NoAccount(); const batch = new web3.BatchRequest(); const promises = calls.map=> { return new Promise((resolve, reject) => { batch.add( if (err) { reject(err); } else { resolve(result); } }) ); }); }); batch.execute(); return Promise.all(promises); } catch { return null; }};export default makeBatchRequest;
There're different ways to subscribe for contract events. For all of them you will need following variables:
import Web3 from 'web3'; const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE'); const ABI = 'YOUR ABI HERE'; const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE'; const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);
referralProgramContract.events .RegisterUser() .on('connected', (subscriptionId: string) => { console.log(`| UserRegistered | events | ${subscriptionId}`); }) .on( 'data', async (event: { removed: boolean; returnValues: RegisterUserResponseInterface; }) => { try { if (event.removed) { return; } const { user, referrer } = event.returnValues; console.log(user, referrer); } catch (e) { console.log(`| ONCE | ${e}`); } }, ) .on('error', (error: ErrnoException) => { console.log(error); });
We're listening to Transfer
event here:
let options = { filter: { value: [], }, fromBlock: 0 }; myContract.events.Transfer(options) .on('data' log(event)) .on('changed' log(changed)) .on('error' .on('connected' log(str))
Filtering options can also be specified:
let options = { fromBlock: 0, address: ['address-1', 'address-2'], //Only get events from specific addresses topics: [] //What topics to subscribe to }; let subscription = ('logs', options if (!err) console.log(event) }); subscription.on('data'=> console.log(event)) subscription.on('changed'=> console.log(changed)) subscription.on('error'=> { throw err }) subscription.on('connected'=> console.log(nr))
Getting history for Transfer
events for specific values. More info can be found here
//example options(optional) let options = { filter: { // only get events where transfer value was 1000 or 1337 value: ['1000', '1337'] }, // number | "earliest" | "pending" | "latest" fromBlock: 0, toBlock: 'latest' }; myContract.getPastEvents('Transfer', options) .then log(results)) .catch
For common functions see Common typescript examples.
Useful for calling smart contract methods:
import { Contract } from 'web3-eth-contract';import { web3 } from '.';const getContract = (abi: object, address?: string): => { const abiFromJson = JSON.parse( return new web3.eth.Contract(abiFromJson, address);};export default getContract;
Contract has read and write methods. To get a list of methods, you can paste contract address on https://etherscan.io/ ETH or any other service.
Read methods doesn't require spending gas. Write methods cost some amount of gas, hence they will be executed with confirmation from user.
// see example belowimport { getContract } from '.';// ABI of contractconst CONTRACT_ABI = { /* ... */ }; // address for contractconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';export const executeContractMethod = async ({}) => { // getting contract const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS); // Calling write method try { // authorizing with Metamask await web3.currentProvider.request({ method: 'eth_requestAccounts' }); // getting wallet address const addressUser = web3.currentProvider.selectedAddress; // calling "store" store method for contract // payload should include `from` address, that matches // current user's wallet await contract.methods.store(0, 'Parameter').send({ from: addressUser, }); } catch (e) { throw new Error(e); } // calling read method try { // this method can return data const result = await contract.methods.retrieve().call(); } catch (e) { throw new Error(e); }}
// see example belowimport { getContract } from '.';// ABI контрактаconst CONTRACT_ABI = { /* ... */ };// contract addressconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';// getting contractconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);// account's private keyconst privateKey = '...';// write-methods requires private keyconst executeContractMethod = async (val: number) => { const transaction = contract.methods.store(val); const account = web3.eth.accounts.privateKeyToAccount(privateKey); const options = { to: CONTRACT_ADDRESS, data: transaction.encodeABI(), gas: await transaction.estimateGas({ from: account.address }), gasPrice: await web3.eth.getGasPrice(), }; const signed = await web3.eth.accounts.signTransaction( options, privateKey, ); await web3.eth.sendSignedTransaction(signed.rawTransaction!);};
Function calls batch of requests, returning array of results. For example:
const requests = [ contract.method.balanceOf().call, contract.method.getStaked().call ] const result = await makeBatchRequest(request);
const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);const makeBatchRequest = (calls: any[]) => { try { const web3 = getWeb3NoAccount(); const batch = new web3.BatchRequest(); const promises = calls.map=> { return new Promise((resolve, reject) => { batch.add( if (err) { reject(err); } else { resolve(result); } }) ); }); }); batch.execute(); return Promise.all(promises); } catch { return null; }};export default makeBatchRequest;
There're different ways to subscribe for contract events. For all of them you will need following variables:
import Web3 from 'web3'; const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE'); const ABI = 'YOUR ABI HERE'; const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE'; const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);
referralProgramContract.events .RegisterUser() .on('connected', (subscriptionId: string) => { console.log(`| UserRegistered | events | ${subscriptionId}`); }) .on( 'data', async (event: { removed: boolean; returnValues: RegisterUserResponseInterface; }) => { try { if (event.removed) { return; } const { user, referrer } = event.returnValues; console.log(user, referrer); } catch (e) { console.log(`| ONCE | ${e}`); } }, ) .on('error', (error: ErrnoException) => { console.log(error); });
We're listening to Transfer
event here:
let options = { filter: { value: [], }, fromBlock: 0 }; myContract.events.Transfer(options) .on('data' log(event)) .on('changed' log(changed)) .on('error' .on('connected' log(str))
Filtering options can also be specified:
let options = { fromBlock: 0, address: ['address-1', 'address-2'], //Only get events from specific addresses topics: [] //What topics to subscribe to }; let subscription = ('logs', options if (!err) console.log(event) }); subscription.on('data'=> console.log(event)) subscription.on('changed'=> console.log(changed)) subscription.on('error'=> { throw err }) subscription.on('connected'=> console.log(nr))
Getting history for Transfer
events for specific values. More info can be found here
//example options(optional) let options = { filter: { // only get events where transfer value was 1000 or 1337 value: ['1000', '1337'] }, // number | "earliest" | "pending" | "latest" fromBlock: 0, toBlock: 'latest' }; myContract.getPastEvents('Transfer', options) .then log(results)) .catch
Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.
$cell: 250px;$gap: 20px;.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax($cell, 1fr)); grid-auto-rows: 256px; grid-auto-flow: row dense; grid-column-gap: $gap; grid-row-gap: $gap;}
.h-2 { // takes 2 columns grid-column-end: span 2;}.v-2 { // takes 2 rows grid-row-end: span 2;}
.full-width { grid-row: 1 / 2; // height: 1 row grid-column: 1 / -1;}
.top-right { grid-row: 1 / 3; // height here grid-column: -2 / -1; // width here}
Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.
$cell: 250px;$gap: 20px;.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax($cell, 1fr)); grid-auto-rows: 256px; grid-auto-flow: row dense; grid-column-gap: $gap; grid-row-gap: $gap;}
.h-2 { // takes 2 columns grid-column-end: span 2;}.v-2 { // takes 2 rows grid-row-end: span 2;}
.full-width { grid-row: 1 / 2; // height: 1 row grid-column: 1 / -1;}
.top-right { grid-row: 1 / 3; // height here grid-column: -2 / -1; // width here}
Say, we need to color n
items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:
@mixin color-per-child($colors) { @each $color in $colors { &:nth-child(#{index(($colors), ($color))}) { color: $color; } }}
Usage is simple:
.item { @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));}
Say, we need to color n
items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:
@mixin color-per-child($colors) { @each $color in $colors { &:nth-child(#{index(($colors), ($color))}) { color: $color; } }}
Usage is simple:
.item { @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));}
To test if browser supports some #CSS rules, do following:
@supports (backdrop-filter: blur(5px)) { backdrop-filter: blur(5px);}
This @mixin
will only apply rule if browser support backdrop filtering:
@mixin can_backdrop { @supports ( (-webkit-backdrop-filter: blur(5px)) or (backdrop-filter: blur(5px)) ) { @content; }}
To test if browser supports some #CSS rules, do following:
@supports (backdrop-filter: blur(5px)) { backdrop-filter: blur(5px);}
This @mixin
will only apply rule if browser support backdrop filtering:
@mixin can_backdrop { @supports ( (-webkit-backdrop-filter: blur(5px)) or (backdrop-filter: blur(5px)) ) { @content; }}
Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:
FROM node:16-alpine as builder
WORKDIR /app
@@ -12,5 +12,5 @@ COPY . .
RUN yarn generate
FROM nginx
-COPY --from=builder /app/dist /usr/share/nginx/html