Eine Schnittstelle zu einheitlichen dezentralen Diensten mit IPFS, Filecoin und der Wolfram Language
Im Rahmen von Wolframs Zielsetzung, eine einheitliche Blockchain-Schnittstelle zu schaffen, arbeitet Wolfram Blockchain Labs (WBL) daran, Entwicklerinnen und Entwicklern direkten Zugriff auf eine Reihe von Blockchains und dezentralisierten Technologien zu ermöglichen. Heute freuen wir uns, eine Zusammenarbeit mit IPFS und Filecoin bekanntzugeben, die zu den Kernbausteinen des Web3 (oder des “dezentralen” Internets) gehören. Zusätzlich zur Integration von IPFS und der Filecoin-Blockchain in der Wolfram Language ermöglicht diese einzigartige Zusammenarbeit Entwicklerinnen und Entwicklern die Speicherung ihrer Arbeiten, die Nutzung von Peer-to-Peer-Netzwerken und anderen Protokollen für ihre bestehenden und neuen dezentralen Anwendungen. All das kann mit Wolfram-Technologien wie unserer Wolfram Language, der Wolfram Cloud und Wolfram Notebooks gemacht werden.
Die Kombination dieser Komponenten eröffnet neue Möglichkeiten, wie Technologie in der Wissenschaft, im Bildungsbereich, in der Finanz, in Unternehmen und mehr eingesetzt werden kann. Mit unseren Partnerinnen und Partnern von der Max Planck Digital Library haben wir bereits ein tolles Beispiel für Forscherinnen und Forscher entwickelt (davon mehr in diesem Blogpost) und wir rechnen mit weiteren wegweisenden Anwendungen in der Zukunft. Aber sehen wir uns zuerst die Details an.
IPFS, Filecoin und libp2p: Das Grundgerüst des Web3
IPFS, Filecoin und libp2p haben mit wichtigen Technologien maßgeblich zur Web3-Bewegung zur Dezentralisierung des Internets beigetragen.
Filecoin ergänzt IPFS als quelloffener Cloud-Storage-Marktplatz, Protokoll und Kryptowährung. Filecoin bietet eine langfristige Dateispeicherung durch eine leistungsstarke und dynamische dezentrale Cloud-Speicherlösung. Die Teilnehmerinnen und Teilnehmer des Filecoin-Blockchain-Netzwerks können ihren offenen Speicherplatz gegen Client-Speichergebühren und finanzielle Anreize “mieten” und “vermieten”, wodurch die langfristige Speicherkapazität des Netzwerks gewährleistet wird.
Die Liste der nützlichen Protokolle ist lang: libp2p zur Erstellung Peer-to-Peer-Netzwerk-basierter Anwendungen, Multiformats für zukunftssichere Systeme mit selbstbeschreibenden Dateiformaten und das IPLD-Ökosystem aus Formaten und Datenstrukturen zur Erstellung komplett dezentraler Anwendungen. Wolfram veröffentlicht laufend Updates zu weiteren integrierten Technologien, an denen unsere Entwicklerinnen und Entwickler arbeiten.
Am besten lässt sich die Einfachheit und Bedeutung der Integration des IPFS-Ökosystems in die Leistungsfähigkeit der Wolfram Language anhand eines Beispiels veranschaulichen.
Stellen Sie eine Datei auf IPFS:
ExternalStorageUpload["ExampleData/spikey2.png", ExternalStorageBase -> "IPFS"]
Laden Sie eine Datei von IPFS herunter:
file = ExternalStorageDownload[ ExternalStorageObject[ "QmXpif6oKinoP8CwPMCJPqoJNwvEfzbH1cJg6yZkBLJwKu", Association[ "ExternalStorageBase" -> "IPFS", "FileHash" -> "c9ccd63d95043f5d639a76b932dba6c9"]]]
Importieren Sie die Datei:
Import[file]
bloxbergs Certify & Verify in der Anwendung
Daten vorbereiten und auf IPFS stellen
In diesem Beispiel nehmen wir eine PDF-Datei von Satoshi Nakamotos Whitepaper “Bitcoin: A Peer-to-Peer Electronic Cash System” und bereiten sie vor, um sie an den bloxberg Certify-Smart Contract zu senden. Außerdem erweitern wir die Funktionalität, indem wir die Datei ins IPFS-Netzwerk stellen und eine JSON-Metadaten-Datei erstellen, die ebenfalls ins IPFS gestellt wird und die CID der PDF-Datei enthält.
Berechnen Sie den Hash-Wert des Forschungsdokuments:
filePath = FileNameJoin[{NotebookDirectory[], "bitcoin.pdf"}]
fileHash = FileHash[filePath, "SHA256", "HexString"]
Versehen Sie die Daten mit dem Unix-Zeitstempel:
timestamp = ToString[UnixTime[Now]];
Stellen Sie die Forschungsdatei auf IPFS:
eso = ExternalStorageUpload[filePath, ExternalStorageBase -> "IPFS"]
Erstellen Sie die Metadaten zum Dokument und Autor:
metadata = <| "Title" -> "Bitcoin: A Peer-to-Peer Electronic Cash System", "Author" -> "Satoshi Nakamoto", "Affiliation" -> "bitcoin.org", "FileCID" -> eso["CID"] |>;
metadata // Dataset
metadataFilePath = Export[FileNameJoin[{NotebookDirectory[], "metadata.json"}], metadata, "JSON"]
Stellen Sie die Metadaten ins IPFS:
metadataESO = ExternalStorageUpload[metadataFilePath, ExternalStorageBase -> "IPFS"]
metadataCID = metadataESO["CID"]
Daten zur Zertifizierung als “smarter Vertrag” auf das bloxberg-Netzwerk laden
In diesem Abschnitt werden wir die Transaktion mit allen erforderlichen Daten erstellen und an die bloxberg-Blockchain schicken, um sie durch einen Certify-Smart Contract zertifizieren zu lassen. Die folgenden Private Keys werden zum Verständnis der Leser angezeigt.
Initialisieren Sie einige Variablen für die Transaktion:
key = PrivateKey[ Association[ "Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "PublicCurvePoint" -> { 27112075690151519677987005437167591271987576467999908152870704903\ 750742697008, 3534019055898665520072520949331176238451788939602461575265997766\ 3077697880714}, "PrivateMultiplier" -> 8676843423833923876056101813405014181278722\ 7642250635023819795985067687832300, "Compressed" -> False, "PublicByteArray" -> ByteArray[{4, 59, 240, 228, 27, 20, 0, 72, 116, 89, 142, 194, 128, 17, 192, 43, 187, 15, 70, 187, 147, 254, 186, 247, 198, 148, 96, 23, 200, 48, 179, 228, 48, 78, 33, 214, 201, 224, 235, 43, 178, 189, 71, 151, 166, 253, 217, 43, 132, 24, 39, 185, 92, 213, 198, 0, 46, 244, 85, 165, 18, 11, 158, 130, 138}], "PrivateByteArray" -> ByteArray[{191, 213, 49, 131, 159, 167, 125, 243, 62, 158, 234, 92, 248, 2, 42, 136, 221, 127, 168, 24, 172, 124, 117, 37, 61, 155, 34, 38, 150, 88, 106, 236}]]];
address = BlockchainKeyEncode[key, "Address", BlockchainBase -> "bloxberg"]
txCount = BlockchainAddressData[address, "TransactionCount", BlockchainBase -> "bloxberg"]
Bereiten Sie die Transaktion vor:
tx = BlockchainTransaction[<|"TransactionCount" -> txCount, "Address" -> "E5a9654C7e190701016EBf18206020bf16D8Beab", "FunctionCall" -> <| "Function" -> Typed["createData", {"string", "bool", "string", "string"} -> {"bytes32"}], "Inputs" -> {fileHash, True, metadataCID, timestamp}|>, "GasPrice" -> Quantity[1, "Brox"], "BlockchainBase" -> "bloxberg"|>]
Signieren Sie die Transaktion:
txSigned = BlockchainTransactionSign[tx, key]
Senden Sie die Transaktion:
txSubmitted = BlockchainTransactionSubmit[txSigned]
txid = txSubmitted["TransactionID"]
Überprüfen Sie die Transaktion:
Dataset[BlockchainTransactionData[txid, BlockchainBase -> "bloxberg"], HiddenItems -> {"EventList" -> True}, ItemSize -> {50}]
Verifizierte Daten in der bloxberg-Blockchain überprüfen
In diesem Abschnitt rufen wir den bloxberg Verify-Smart Contract auf, um die Daten abzurufen und mit Hilfe der JSON-Metadaten die Original-PDF-Datei aus dem IPFS abzurufen.
Rufen Sie die Verifizierungsdaten ab:
eventsList = BlockchainTransactionData[txid, "EventList", BlockchainBase -> "Bloxberg"];
verifyData = BlockchainContractValue[ eventsList[[1]]["Address"], <| "Function" -> Typed["retrieveResearchData", {"bytes32"} -> {"string", "string", "bytes32", "string", "bool"}], "Inputs" -> eventsList[[1]]["Data"]|>, BlockchainBase -> "Bloxberg"];
Dataset[Association["StringCheckSum" -> verifyData[[1]], "IPFS" -> verifyData[[2]], "ResearchID" -> verifyData[[3]], "Timestamp" -> FromUnixTime[ToExpression[verifyData[[4]]]], "DataExists" -> verifyData[[5]]]]
Rufen Sie die IPFS-Metadaten-CID ab:
ipfsCID = verifyData[[2]]
Laden Sie die Metadaten von IPFS herunter:
verifyMetadataFile = ExternalStorageDownload[ipfsCID, ExternalStorageBase -> "IPFS"]
Importieren Sie die Metadaten:
verifyMetadata = Import[verifyMetadataFile, "RawJSON"];
Dataset[verifyMetadata]
Downloaden Sie das Forschungsdokument:
ExternalStorageDownload[verifyMetadata["FileCID"]]
Zukunftsweisend für das Web3
Wir glauben, dass die nächste Phase in der Entwicklung des Internets eine Bewegung in Richtung Dezentralisierung von Webseiten und Diensten ist. Die Integration von IPFS und Filecoin in der Wolfram Language erweitert das Spektrum an Anwendungen, Diensten und Analysen, die man unabhängig von der eigenen Programmiererfahrung erstellen kann. Wir planen, unsere Zusammenarbeit mit IPFS zu vertiefen, um eine Integration der Filecoin-Blockchain, die Verwendung von Filecoin für die Speicherung, die symbolische Manipulation von Daten von IPFS und Filecoin, Analysebeispiele, Anwendungen für den Unterricht und mehr zu ermöglichen.
Wir sind überzeugt, dass es in Zukunft Beispiele in verschiedenen Bereichen und für verschiedene Anwenderinnen und Anwender geben wird:
- Datenanalyse: Daten von Filecoin und IPFS abrufen und damit Analysen durchführen, alles in der Wolfram Language
- NFTs: NFTs mit Wolfram Notebooks, der Wolfram Language und Verbindungen zu Blockchains erstellen, downloaden und verwenden
- Hochschulen: Daten für eine offene und transparente Nutzung speichern und Forschungsergebnisse gemeinsam nutzen und bearbeiten
- Unternehmen: In Zusammenarbeit mit Wolfram Technical Consulting innovative Prototypen entwickeln und Analysen durchführen
- Entwickler: Zukunftsweisende Anwendungen mit Rechenkapazitäten entwickeln
Demnächst stellen wir die Einsatzmöglichkeiten und Vorteile von IPFS und Blockchains mit einem spannenden, kurzweiligen und KOSTENLOSEN Beispiel zu NFTs vor!
Kontaktieren Sie Wolfram Blockchain Labs, um mehr darüber zu erfahren, wie Sie Ihre Blockchain in die Wolfram Language integrieren können. Kontaktieren Sie Wolfram Technical Consulting, um ein Blockchain-Projekt zu starten. |
Comments