手把手教你区块链java开发智能合约nft-第五篇(铸造第一个NFT)

本文详细介绍了如何使用Java进行区块链NFT的开发,包括回顾前文、部署NFT721智能合约、使用私钥签名数据以及铸造NFT的过程。代码示例展示了如何调用mint方法,输入tokenId、tokenURI等信息,并查看铸造后的NFT链上数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手把手教你区块链java开发智能合约nft-第五篇(铸造第一个NFT)

回顾

初学区块链,那真叫一个痛苦并无助。如果没有人带你的话

今天写的这篇是在前面文章基础上写的,初学区块链的朋友建议先看我前面写的文章
手把手教你区块链java开发智能合约nft-第一篇
手把手教你区块链java开发智能合约nft-第二篇(部署第一个NFT智能合约)
手把手教你区块链java开发智能合约nft token-第三篇(部署token)
手把手教你区块链java开发智能合约nft(第四篇)-如何动态获取gasPrice和gasLimit?

部署NFT721

关于部署NFT721 ,可以参考之前的文章:
手把手教你区块链java开发智能合约nft-第二篇(部署第一个NFT智能合约)

部署完成后,将得到一个NFT721的智能合约地址:contractAddress,这个智能合约地址值需要保存好,待会铸造NFT时需要用到它

比如我在部署合约完成后,得到的contractAddress值为:0x1fc51bf18b49d29f7a40825914e8c68f4ce7b255

铸造NFT

铸造NFT也是比较简单的,直接调用NFT721 的方法mint 就可以了,主要难点是在对数据的签名上
直接上代码吧

 @Test
    public void mint() throws Exception {
   
        //NFT721合约地址
        String contractAddress="0x1fc51bf18b49d29f7a40825914e8c68f4ce7b255";
        String tokenId="2";   //上链的NFT id
        String tokenURI="/static/uploadQmVJoMsgcsCCz75ZHzup7e8boqhBz9R8SKYwKknFEWamzA.png";   //上链的tokenId对应的值
        //铸造NFT需要用到的私钥,在部署合约时指定的地址对应的私钥
        String miner="0x5369576889297382912123166219811286283737728368986117127236719812";

        TransactionManager transactionManager = getRawTransactionManager();
        ContractGasProvider contractGasProvider = getContractGasProvider();
        NFT721 nft721 = NFT721.load(contractAddress, web3j, transactionManager, contractGasProvider);
        Credentials credentials = getCredentials();

        ECKeyPair ecKeyPair = ECKeyPair.create(Numeric.hexStringToByteArray(miner));

        Type<BigInteger> tId = new Uint(new BigInteger(tokenId));
        String a = contractAddress + Numeric.cleanHexPrefix(TypeEncoder.encode(tId));
        a = Hash.sha3(a);
        byte[] b = Numeric.hexStringToByteArray(a);
        Sign.SignatureData data = Sign.signPrefixedMessage(b, ecKeyPair);


        ArrayList<NFT721.Fee> fees = Lists.newArrayList(new NFT721.Fee(credentials.getAddress(), BigInteger.valueOf(200)));
        TransactionReceipt transactionReceipt = nft721.mint(new BigInteger(tokenId), new BigInteger(data.getV()), data.getR()
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值