Menu

Tree [8785aa] master /
 History

HTTPS access


File Date Author Commit
 examples 2023-03-13 Prof Nilson Mori Prof Nilson Mori [8785aa] using JaCaMo with gradlew
 javadoc 2023-02-25 Prof Nilson Mori Prof Nilson Mori [52eb17] jason examples ok
 lib 2023-03-02 Prof Nilson Mori Prof Nilson Mori [dc63fa] house-building with BigchainDB
 paper 2023-03-13 Prof Nilson Mori Prof Nilson Mori [8785aa] using JaCaMo with gradlew
 velluscinum-project 2023-03-08 Prof Nilson Mori Prof Nilson Mori [501748] coreção de bugs no acesso concorrente e melhori...
 .gitignore 2023-03-13 Prof Nilson Mori Prof Nilson Mori [8785aa] using JaCaMo with gradlew
 README.md 2023-03-08 Prof Nilson Mori Prof Nilson Mori [cb3119] ajuste nos exemplos bobEalice e cozinheiroEcomilao

Read Me

Um middleware para integração de Agentes BDI com o BigChainDB

Metodologia

Uma integração entre agentes Jason BDI com o BigChainDB ocorre, de forma que, um agente possa criar ou transferir um ativo digital diretamente por ações internas. A Figura abaixo apresenta a metodologia proposta.

alt text for screen readers

Para possibilitar a interação direta dos agentes, através de ações internas é necessária a importação da biblioteca velluscinum.jar (sourceforge.net), para o diretório /lib no projeto.

Ações internas:

  • .buildWallet(w) - gera uma carteira e retorna a crença +w(P,Q);
  • .deployNFT(S,P,Q,I,M,b) - gera um NFT e retorna a crença +b(A);
  • .transferNFT(S,P,Q,A,R,M,b) - transfere um NFT e retorna +b(T);
  • .deployToken(S,P,Q,I,V,b) - cria V unidades de um token e retorna +b(C );
  • .transferToken(S,P,Q,C,R,V,b) - transfere V unidades de C e retorna +b(T );
  • .stampTransaction(S,P,Q,T) - carimba a transação (T );
  • .tokenBalance(S,P,Q,C,q) - retorna +q(C,V).

Onde:

  • Crenças:
    -- b é uma crença que representa o resultado de uma operação na DLT;
    -- w é uma crença que representa a carteira do agente;
    -- q é uma crença que representa o saldo do token C na carteira do agente.
  • Literais:
    -- A é um literal que representa um NFT na DLT;
    -- C é um literal que representa um Token na DLT;
    -- P é um literal que representa a chave privada do agente;
    -- Q é um literal que representa a chave pública do agente;
    -- R é um literal que representa a chave pública de um agente destinatário;
    -- S é um literal que representa o endereço de um nó da DLT;
    -- T é um literal que representa uma transação realizada na DTL;
    -- V é um literal que representa a quantidade de um Token na DTL;
  • Arrays:
    -- I é um array chave-valor (K1:V1;K2:V2;Kn:Vn) que representa os dados imutáveis de um ativo digital (ASSET);
    -- M é um array chave-valor (k1:v1;k2:v2;kn:vn) que representa os metadados do ativo ou de uma transação (METADATA);

Exemplo Simples

/* Initial beliefs and rules */
bigchainDB("http://testchain.chon.group:9984/").
aliceKey("FNJPJdtuPQYsqHG6tuUjKjqv7SW84U4ipiyyLV2j6MEW").

/* Initial goals */
!start.

/* Plans */
+!start <-
    .print("Creating a Wallet");
    .buildWallet(myWallet);
    .wait(myWallet(PrivateKey,PublicKey));

    .print("Creating a NFT");
    ?bigchainDB(Server);
    .deployNFT(Server,
            PrivateKey,PublicKey,
            "name:Meninas;author:Silva y Velázquez;place:Madrid;year:1656",
            "location:Madrid;value_eur:25000000;owner:Bob Agent",
            myNFT);

    .wait(myNFT(AssetID));
    .print("NFT registered: ",Server,"api/v1/transactions/",AssetID);

    .print("Tranfering the NFT");
    ?aliceKey(AliceKey);
    .transferNFT(Server,
                PrivateKey,PublicKey,
                AssetID,
                AliceKey,
                "value_eur:30000000;owner:Alice;location:Rio de Janeiro",
                transactionTo(alice));

    .wait(transactionTo(alice,TransferID));
    .print("NFT transferred: ",Server,"api/v1/transactions/",TransferID).

Outros Exemplos

Referências

GMBH, BigchainDB. BigchainDB 2.0 The Blockchain Database. [S. l.: s. n.], 2018. Disponível em: https://www.bigchaindb.com/whitepaper/.
MCCONAGHY, Trent; MARQUES, Rodolphe; MÜLLER, Andreas; DE JONGHE, Dimitri; MCCONAGHY, Troy; MCMULLEN, Greg; HENDERSON, Ryan; BELLEMARE, Sylvain; GRANZOTTO, Alberto. Bigchaindb: a scalable blockchain database. white paper, BigChainDB, 2016.

MongoDB Logo MongoDB