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, 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.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.