top of page
Console de programmation

Ressources

  • Medium
  • GitHub
  • telegram
  • 5968898

Medium
Articles & News

GitHub
Documentations,
tutoriels et librairies

Telegram
Articles & News

Discord
Communauté
de développeurs

APIs et exemples de la Blockchain Kalima

La blockchain embarquée Kalima fournit une interface de programmation d'applications (Apis) ouverte pour permettre aux utilisateurs de créer des applications adaptées à leurs besoins et leur permettant de collecter, de transporter et de partager des données de confiance avec des services, des machines, des mobiles ou des utilisateurs.

Voici un exemple simple d'utilisation :

L'application envoie 10 messages "hello x" dans le canal "sensors" avec l'identifiant unique "/key" Comme l'identifiant unique reste le même, "hello 1" sera remplacé par "hello2" dans memcache et ainsi de suite. Cependant toutes les valeurs resteront dans la blockchain.

for(int i=0 ; i<10 ; i++) {

String body = "hello" + sequence;

KMsg kMsg = new KMsg(sequence);

node.sendToNotaryNodes(kMsg.getMessage(devId,KMessage.PUB,

"sensors", "/key", body.getBytes(), new KProps("-1")));

sequence++ ;

}

Smart contracts creation

Example of a client running smart contracts public void initComponents :public void initComponents(){

 

byte[] key = new byte[] {

(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,

(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,

(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,

(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,

};

devId=KKeyStore.setDevId(clonePreferences.getLoadConfig().getFilesPath(), "devID", key, logger);

node = new Node(clonePreferences.getLoadConfig()); node.setDevID(devId);

clone = new Clone(clonePreferences, node);

serverCallBack = new KalimaServerCallBack(this);

clientCallBack = new KalimaClientCallBack(this);

try {

node.connect(serverCallBack, clientCallBack);

contractManager.initContracts(service_Contracts, clonePreferences.getContractsPropsFileName(), this);

contractManager.runReqContract();

} catch (IOException e) {

logger.log_srvMsg("Kalima2Auth", "Client", Logger.ERR, "initComponents initNode failed : " + e.getMessage());

}

}

Smart contracts creation with Javascript

Example of smart contracts using JAVASCRIPT :

importPackage(Packages.java.io);

importPackage(Packages.java.lang);

importPackage(Packages.java.util);

var trk = trackDocument;

var userCenterCode = trk.getUserCenter().getUserCenterCode();

var cptLigne = trk.getUserCenter().sizeOfLineArray();

for (var i=0; i< cptLigne; i=i+1){

var assemblyLine=trk.getUserCenter().getLineList().get(i).getAssemblyLine();

var cptGatePoint=trk.getUserCenter().getLineList().get(i).getGatePointList().size();

var ligne ="";

for (var j=0; j< cptGatePoint; j=j+1) {

var production ="";

var cptProductionSequence=trk.getUserCenter().getLineList().get(i).getGatePointList().get(j).getProductionSequenceList().size();

for(var k=0; k< cptProductionSequence; k=k+1) {

varsequ =trk.getUserCenter().getLineList().get(i).getGatePointList().get(j).getProductionSequenceList().get(k); writeLigneMage.setDateMessage(sequ.getSequenceStartDate()); writeLigneMage.setDayOfYear(sequ.getManufacturingReference().getAssemblyID().getDayOfYear()); writeLigneMage.setSequenceDay(sequ.getManufacturingReference().getAssemblyID().getSequenceOfDay());

production = production + writeLigneMage.buildLigneMage() ;

ligne=ligne+"\t"+writeLigneMage.setManufacturingAreaID(trk.getUserCenter().getLineList().get(i).getGatePointList().get(j).getManufacturingAreaID())+production ; }

var keySauv = "/client/" + assemblyLine;

kvmsg.setBody(toUTF8Array("L"+assemblyLine+ligne));

clonecli.set("track", keySauv, kryoSerializer.serialize(kvmsg), -2);

}

result = "OK";

Smart contracts creation for Android

Example of java smart contract in Android 

final EditText editText = findViewById(R.id.edit_send);

Button testSend = findViewById(R.id.test_send);

testSend.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

try {

// send message in cachePath /test with key "key"

kalimaServiceAPI.set("/test", "key", editText.getText().toString().getBytes(), "-1");

editText.setText("");

} catch (RemoteException e) {

e.printStackTrace();

}

}

});

#Un client Android un callback défini les actions a exécuter sur réception d’un message : kalimaCacheCallback = new KalimaCacheCallback.Stub()

{

@Override

public void onEntryUpdated(String s, KMsgParcelable kMsgParcelable) throws RemoteException {

Log.d("onEntryUpdated", "cachePath=" + s + ", key=" + kMsgParcelable.getKey());

}

@Override

public void onEntryDeleted(String s, String s1) throws RemoteException {

Log.d("onEntryDeleted", "cachePath=" + s + ", key=" + s1);

}

@Override

public void onConnectionChanged(int i) throws RemoteException {

}

};

Communication REST in HTTP with CURL

Example of Kalima PUT and GET calls from CURL :
curl --location --request PUT 'https://kloner.io/?action=add&cachePath=/alarmes/incendies&key=test1' \ --header 'Content-Type: application/json' \ --data-urlencode '{"id":"test1","value":5}'

curl --location --request GET 'https://kloner.io/?action=get&cachePath=/alarmes/incendies&key=test1'

Communication REST in HTTP with Java

Example with the GET method in Java

URL obj = new URL("https://kloner.io/?action=get&cachePath=/alarmes/incendies&key=test1");

HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("GET"); 

nt responseCode = con.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) { // success BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer();

 

while ((inputLine = in.readLine()) != null) { response.append(inputLine);

}

in.close();

Communication REST in HTTP with Java

Example with the PUT method in Java

URL obj = new URL("https://kloner.io/?action=add&cachePath=/alarmes/incendies&key=test1");

HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("PUT");

requestProperties.entrySet().forEach(entry->{

con.setRequestProperty(entry.getKey(), entry.getValue());

});

con.setUseCaches(false);

con.setDoOutput(true);

OutputStream os = con.getOutputStream();

os.write("{"id":"test1","value":5}");

os.flush();

os.close();

int responseCode = con.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_ACCEPTED) { //success

BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();

bottom of page