Răsfoiți Sursa

Implementação inicial smart contract.

Ranghetti 5 luni în urmă
părinte
comite
24bbdbf1c5

+ 5 - 0
pom.xml

@@ -86,6 +86,11 @@
             <artifactId>java-jwt</artifactId>
             <version>4.4.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.web3j</groupId>
+            <artifactId>core</artifactId>
+            <version>4.10.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 0
src/main/java/com/platform2easy/genesis/blockchain/build/DocumentManager.abi

@@ -0,0 +1 @@
+[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"uri","type":"string"},{"indexed":false,"internalType":"bytes32","name":"documentHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DocumentAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DocumentRemoved","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"getDocument","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"removeDocument","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"bytes32","name":"documentHash","type":"bytes32"}],"name":"setDocument","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/java/com/platform2easy/genesis/blockchain/build/DocumentManager.bin


+ 33 - 0
src/main/java/com/platform2easy/genesis/blockchain/contract/CreateSmartContract.sol

@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+contract DocumentManager {
+
+    struct Document {
+        string uri;
+        bytes32 documentHash;
+        uint256 lastModified;
+    }
+
+    mapping(string => Document) private documents;
+
+    event DocumentAdded(string indexed name, string uri, bytes32 documentHash, uint256 timestamp);
+    event DocumentRemoved(string indexed name, uint256 timestamp);
+
+    function setDocument(string memory name, string memory uri, bytes32 documentHash) external {
+        documents[name] = Document(uri, documentHash, block.timestamp);
+        emit DocumentAdded(name, uri, documentHash, block.timestamp);
+    }
+
+    function getDocument(string memory name) external view returns (string memory, bytes32, uint256) {
+        Document memory doc = documents[name];
+        require(doc.lastModified != 0, "Documento nao encontrado");
+        return (doc.uri, doc.documentHash, doc.lastModified);
+    }
+
+    function removeDocument(string memory name) external {
+        require(documents[name].lastModified != 0, "Documento nao encontrado");
+        delete documents[name];
+        emit DocumentRemoved(name, block.timestamp);
+    }
+}

+ 2 - 0
src/main/java/com/platform2easy/genesis/blockchain/script/BuildSmartContract.sh

@@ -0,0 +1,2 @@
+#!/bin/bash
+solc --bin --abi --optimize --overwrite -o ../build ../contract/CreateSmartContract.sol

+ 7 - 0
src/main/java/com/platform2easy/genesis/blockchain/script/GenerateWeb3J.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+web3j solidity generate \
+  build/DocumentManager.bin \
+  build/DocumentManager.abi \
+  -p com.platform2easy.genesis.blockchain.service \
+  -o src/main/java/
+  

+ 31 - 0
src/main/java/com/platform2easy/genesis/blockchain/service/DeployNFT.java

@@ -0,0 +1,31 @@
+package com.platform2easy.genesis.blockchain.service;
+
+import org.web3j.crypto.Credentials;
+import org.web3j.protocol.Web3j;
+import org.web3j.protocol.http.HttpService;
+import org.web3j.tx.gas.DefaultGasProvider;
+
+public class DeployNFT {
+
+    public static void main(String[] args) throws Exception {
+        Web3j web3j = Web3j.build(new HttpService("https://sepolia.infura.io/v3/SUA_API_KEY"));
+        Credentials credentials = Credentials.create("SUA_PRIVATE_KEY");
+
+        // Deploy do contrato
+        /*MeuNFT contrato = MeuNFT.deploy(
+                web3j,
+                credentials,
+                new DefaultGasProvider()
+        ).send();
+
+        System.out.println("Contrato implantado em: " + contrato.getContractAddress());
+
+        // Mint de um NFT
+        contrato.mintNFT(
+                credentials.getAddress(),
+                "https://meusite.com/nft/1.json"
+        ).send();
+
+        System.out.println("NFT mintado!");*/
+    }
+}

+ 1 - 0
src/main/java/com/platform2easy/genesis/domain/service/CommodityService.java

@@ -16,6 +16,7 @@ public class CommodityService {
 
     @Transactional
     public void salvar(Commoditiy commoditiy) {
+
         repository.save(commoditiy);
     }
 

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff