Plataforma

''' instalar https://nodejs.org/ https://metamask.io/ #criar conta gratuita# https://thirdweb.com/ https://moralis.io/ #teste paa mumby# https://faucet.polygon.technology/ ''' solidity contracts/Contract.sol: import numpy as np npx thirdweb create --template nft-drop cd nft-drop npm install @moralisweb3/common-evm-utils moralis // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@thirdweb-dev/contracts/base/ERC1155Base.sol"; contract NascenteViva is ERC1155Base { struct NascenteInfo { uint256 validUntil; bool isActive; } mapping(uint256 => NascenteInfo) public nascentes; uint256 public maintenanceFee = 0.01 ether; constructor( address _defaultAdmin, string memory _name, string memory _symbol ) ERC1155Base( _defaultAdmin, _name, _symbol, address(0), // No royalty recipient 0, // 0% royalty address(0) // No primary sale recipient ) {} function mintWithDuration( address _to, uint256 _tokenId, uint256 _durationDays ) external onlyOwner { _mint(_to, _tokenId, 1, ""); nascentes[_tokenId] = NascenteInfo( block.timestamp + (_durationDays * 1 days), true ); } function renewMaintenance(uint256 _tokenId) external payable { require(msg.value >= maintenanceFee, "Insufficient fee"); require(nascentes[_tokenId].isActive, "Inactive token"); nascentes[_tokenId].validUntil += 365 days; } function checkValidity(uint256 _tokenId) public view returns (bool) { return nascentes[_tokenId].isActive && block.timestamp <= nascentes[_tokenId].validUntil; } } bash npx thirdweb deploy _name _symbol json { "name": "Nascente NV-001", "description": "Proteção de nascente na Mata Atlântica", "w": "ipfs://QmXyZ.../nascente.jpg", "properties": { "localização": "-23.5505° S, -46.6333° W", "vazão": "1500 L/hora", "validade": "3 anos" } } .env.local: env MORALIS_API_KEY=your_api_key THIRDWEB_CLIENT_ID=your_thirdweb_id CONTRACT_ADDRESS=0x... pages/index.js javascript import { MoralisProvider } from "react-moralis"; function MyApp({ Component, pageProps }) { return ( ); } javascript import { useMoralis, useWeb3Contract } from "react-moralis"; export default function NascenteDashboard() { const { isWeb3Enabled, account } = useMoralis(); const { runContractFunction: getValidity } = useWeb3Contract({ abi: nascentesAbi, contractAddress: contractAddress, functionName: "checkValidity", params: { _tokenId: 1 } }); const [validity, setValidity] = useState(false); useEffect(() => { if (isWeb3Enabled) { getValidity().then(result => setValidity(result)); } }, [isWeb3Enabled, account]); return (

Nascente NV-001

Status: {validity ? "ATIVA" : "INATIVA"}

); } bash npm run dev http://localhost:3000 TransferSingle RenewMaintenance json { "chainId": "0x13881", "chainName": "Mumbai", "rpcUrls": ["https://rpc-mumbai.maticvigil.com/"], "nativeCurrency": {"name":"MATIC","symbol":"MATIC","decimals":18} } image ipfs://CID/nascente.jpg https://www.mapbox.com/ https://sendgrid.com/ https://chain.link/

 

Comentários

Postagens mais visitadas