Energy Blockchain IoT (German)

Die Corrently -API bietet eine per RESP/JSON nutzbare Schnittstelle zur Integration von Internet-Of-Things Geräten in der Energy Blockchain.

API Endpunkt: https://api.corrently.io/core/iot

HTTP-Methode: GET

Parameter

Parameter

Beschreibung

value

Integer (Ganzzahl) Wert, der zu schreiben ist.

signature

Berechtigungssignatur zum Verändern eines Wertes (benötigt account Parameter)

account

Account, dessen Wert verändert werden soll

secret

Nutzung eines Secrets in Ersatz der Signature

Erste Schritte

Die IoT Anbindung erlaubt die Speicherung von Ganzzahlen an einem Speicherort in der Energie Blockchain. Die IoT Schnittstelle bietet ein Berechtigungskonzept, um die Ganzzahl an eine Speicherort zu verändern. Mittels einer Blockchain Adresse (=Account) wird der Speicherort identifizierbar und dessen Wert kann genutzt werden (zum Beispiel in Smart Contracts).

Erstmaliges Schreiben eines Wertes

Von einem Sensor wird der Zahlenwert "1337" abgelesen. Der Sensor hat bislang noch keinen Speicherort zugewiesen bekommen:

GET: https://api.corrently.io/core/iot?value=1337

{
result: {
value: 1337,
account: "0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E",
signature: "0xd6e0807adcd58f514651c22529a4896080c1c8b5b8574e9653dacffb425ceed0487d0a49150a9adff2e2415f280a0b86aea540c31201b9ae9730578a8b7f85721b",
previous_value: 0,
nonce: 1,
err: null
}
}

In diesem Aufruf lautet der Speicherort (Blockchain Adresse, Account):

0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E`

Auslesen des Wertes

Der Inhalt des Speicherortes kann über folgende URL abgerufen werden: https://api.corrently.io/core/iot?account=0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E

{
result: {
value: 1337,
account: "0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E",
nonce: 1,
timeStamp: 1545304066456,
previous_value: 0
}
}

Verändern des Wertes

Damit der Wert verändert werden kann, wird die Signatur aus der Antwort des letzten Schreibens benötigt. Der Wert soll nun auf 1338 erhöht werden:

https://api.corrently.io/core/iot?value=1338&account=0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E&signature=0xd6e0807adcd58f514651c22529a4896080c1c8b5b8574e9653dacffb425ceed0487d0a49150a9adff2e2415f280a0b86aea540c31201b9ae9730578a8b7f85721b

{
result: {
value: 1338,
account: "0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E",
signature: "0xd8bd3bb5e88d6264005332b69c4c48168ba7cb20e242e2af1da1aa6696fcc4e456258bf2a4ea0750e9aa6557090b9cdbf403782f72eea809b6c912e34298a71d1c",
previous_value: 1337,
nonce: 2,
err: null
}
}

Kontrolle des aktualisierten Wertes:

https://api.corrently.io/core/iot?account=0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E

{
result: {
value: 1338,
account: "0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E",
nonce: 2,
timeStamp: 1545304485216,
previous_value: 1337
}
}

Verwendung eines Secrets

Damit der Sensor die Rückgabe nicht auswerten muss, kann anstelle der letzten Signatur beim Verändern des gepeicherten Wertes auch ein Secret verwendet werden. Dieses muss mit einer Aktualisierung zunächst eingerichtet werden. Aus dem voran gegangenen Beispiel soll der Wert hierfür auf 1339 erhöht werden und gleichzeitig das Secret "Doku1" gesetzt werden.

https://api.corrently.io/core/iot?value=1339&account=0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E&signature=0xd8bd3bb5e88d6264005332b69c4c48168ba7cb20e242e2af1da1aa6696fcc4e456258bf2a4ea0750e9aa6557090b9cdbf403782f72eea809b6c912e34298a71d1c&secret=Doku1

{
result: {
value: 1339,
account: "0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E",
signature: "0xe0b51fbd4ac3e5480a1aee794560c56ecb695d72446ab8b008c569322dd1faf003d2f483818d97563743e2d9ead2e6ec1252ecc677c40fe266cf7c37c3ea82e91b",
previous_value: 1338,
nonce: 3,
err: null
}
}

Zukünftige Aktualisierungen des Wertes benötigen nun nicht mehr die Signatur der vorangegangenen Aktualisierung. Der Wert soll auf 1337 gesetzt werden:

https://api.corrently.io/core/iot?value=1337&account=0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E&secret=Doku1

{
result: {
value: 1337,
account: "0x4A50B76fd1bd7F396efB08cf87aaBb5BdACBAc5E",
signature: "0xfb982e023ef66a6000dbe4864f902839b7a1a521569b3f573e77f13e1a0012a95896db58d3ecfdd034ee8aa7643e0e82dfa2b86f3f451737d7734bc4c62b56861b",
previous_value: 1339,
nonce: 4,
err: null
}
}

Tipps

Testen direkt im Browser

Da die IoT Anbindung mit HTTP-GET Arbeitet, kann diese direkt im Browser getestet werden. Es empfiehlt sich eine Erweiterung zu installieren, die eine Browser-Erweiterung zu verwenden, die JSON Rückgaben einfacher lesbar anzeigt (Beispiel für Chrome )

Schreiben ohne Berechtigung

Wird ein Wert geschrieben/aktualisiert, bei dem die Berechtigung nicht stimmt, so wird ein neuer Speicherort zugewiesen

Kontrolle der Aktualisierungsnummer "nonce"

Es ist ratsam den im Ergebnis oder beim Auslesen enthaltenen "nonce" zu kontrollieren, da er aufsteigend angibt, wie oft der Wert aktualisiert wurde