Wolfram Computation Meets Knowledge

Wolfram Language

Announcements & Events

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.
Announcements & Events

Using IPFS, Filecoin and the Wolfram Language to Build a Unified Decentralized Services Interface

As part of Wolfram’s core goal of a unified blockchain interface, Wolfram Blockchain Labs (WBL) works to give developers direct Wolfram Language access to a range of blockchains and decentralized technologies. Today, we’re excited to announce a collaboration with IPFS and Filecoin, some of the core building blocks of Web3 (or the “decentralized” web). In addition to Wolfram Language integration with IPFS and the Filecoin blockchain, this unique collaboration lets developers leverage storage, peer-to-peer networking and other protocols to complement their existing applications or new decentralized applications, all from Wolfram technologies such as our Wolfram Language, the Wolfram Cloud and Wolfram Notebooks.

Announcements & Events

Cómo usar IPFS, Filecoin y Wolfram Language para crear una interfaz unificada de servicios descentralizados

Como parte del objetivo central de Wolfram de crear una interfaz unificada de cadena de bloques, Wolfram Blockchain Labs (WBL) trabaja para brindar a los desarrolladores acceso directo un amplio rango de cadenas de bloques y tecnologías descentralizadas a través de Wolfram Language. Hoy, nos complace anunciar la colaboración con IPFS y Filecoin, componentes esenciales de la Web3 (o la web “descentralizada”). Además de la integración de Wolfram Language con IPFS y la cadena de bloques de Filecoin, esta colaboración única le permitirá a los desarrolladores aprovechar almacenamiento, redes de pares y otros protocolos para complementar sus aplicaciones existentes o sus nuevas aplicaciones descentralizadas, todo en tecnologías Wolfram como nuestro Wolfram Language, Wolfram Cloud y los cuadernos Wolfram.

La combinación de estos componentes permite nuevas posibilidades computacionales para la investigación, educación, comercio, finanzas y más. Junto con nuestros socios de Max Planck Digital Library, hemos desarrollado un magnífico ejemplo para investigadores que podrá ver en esta publicación. Además estamos enfocados en las futuras posibilidades, así que revisemos los detalles.

IPFS, Filecoin y libp2p han tenido un impacto fundamental en el movimiento Web3 para descentralizar el internet mediante tecnologías esenciales.

IPFS, Filecoin & libp2p: tecnologías fundamentales de la Web3

Filecoin complementa a IPFS y es un mercado de almacenamiento en la nube, protocolo y criptomoneda de código abierto. Ofrece almacenamiento de archivos a largo plazo por medio de una potente y dinámica solución de almacenamiento de nube descentralizada. Las partes interesadas en la red de cadena de bloques de Filecoin pueden “alquilar” el espacio de almacenamiento libre a cambio de una comisión de almacenamiento y recompensas de bloque, las cuales prolongarán la capacidad de almacenamiento a largo plazo de la red.

La lista de protocolos útiles continúa: libp2p para crear aplicaciones de redes de pares; Multiformats para proteger a los sistemas con formatos de archivos autodescritos contra la obsolescencia, y el ecosistema IPLD de formatos y estructuras de datos para crear aplicaciones totalmente descentralizadas. Wolfram contará con más actualizaciones a medida que nuestros desarrolladores continúen creando integraciones.

La mejor manera de ilustrar la facilidad e importancia del ecosistema IPFS y la potencia de la integración con Wolfram Language es con ejemplos del mundo real.

Cargue un archivo a IPFS:

&#10005 ExternalStorageUpload["ExampleData/spikey2.png", ExternalStorageBase -> "IPFS"]

Descargue un archivo de IPFS:

&#10005 file = ExternalStorageDownload[ ExternalStorageObject[ "QmXpif6oKinoP8CwPMCJPqoJNwvEfzbH1cJg6yZkBLJwKu", Association[ "ExternalStorageBase" -> "IPFS", "FileHash" -> "c9ccd63d95043f5d639a76b932dba6c9"]]]

Importe el archivo:

&#10005 Import[file]

Caso práctico de bloxberg Certify & Verify

Cómo preparar los datos y cargar a IPFS

En este ejemplo utilizaremos un archivo PDF del libro blanco de Satoshi Nakamoto “Bitcoin: A Peer-to-Peer Electronic Cash System”, y lo prepararemos para ser enviado al contrato inteligente Certify de bloxberg. Adicionalmente, extendemos la funcionalidad al cargar el archivo a IPFS y crear un archivo de metadatos JSON que también será cargado a IPFS, y contiene el CID del archivo PDF.

Aplique hash al documento de investigación:

&#10005 filePath = FileNameJoin[{NotebookDirectory[], "bitcoin.pdf"}]
&#10005 fileHash = FileHash[filePath, "SHA256", "HexString"]

Obtenga la marca temporal Unix:

&#10005 timestamp = ToString[UnixTime[Now]];

Cargue el archivo de investigación a IPFS:

&#10005 eso = ExternalStorageUpload[filePath, ExternalStorageBase -> "IPFS"]

Cree los metadatos del documento y el autor:

&#10005 metadata = <| "Title" -> "Bitcoin: A Peer-to-Peer Electronic Cash System", "Author" -> "Satoshi Nakamoto", "Affiliation" -> "bitcoin.org", "FileCID" -> eso["CID"] |>;
&#10005 metadata // Dataset
&#10005 metadataFilePath = Export[FileNameJoin[{NotebookDirectory[], "metadata.json"}], metadata, "JSON"]

Cargue los metadatos a IPFS:

&#10005 metadataESO = ExternalStorageUpload[metadataFilePath, ExternalStorageBase -> "IPFS"]
&#10005 metadataCID = metadataESO["CID"]

Cómo enviar datos al contrato inteligente Certify de bloxberg

En esta sección crearemos la transacción con todos los datos requeridos y la enviaremos a la cadena de bloques bloxberg para certificarla mediante el contrato inteligente Certify. Las siguientes claves privadas han sido publicadas para una mejor comprensión por parte de los lectores.

Inicialice algunas variables para la transacción:

&#10005 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}]]];
&#10005 address = BlockchainKeyEncode[key, "Address", BlockchainBase -> "bloxberg"]
&#10005 txCount = BlockchainAddressData[address, "TransactionCount", BlockchainBase -> "bloxberg"]

Prepare la transacción:

&#10005 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"|>]

Firme la transacción:

&#10005 txSigned = BlockchainTransactionSign[tx, key]

Envíe la transacción:

&#10005 txSubmitted = BlockchainTransactionSubmit[txSigned]
&#10005 txid = txSubmitted["TransactionID"]

Revise la transacción:

&#10005 Dataset[BlockchainTransactionData[txid, BlockchainBase -> "bloxberg"], HiddenItems -> {"EventList" -> True}, ItemSize -> {50}]

Cómo verificar los datos certificados en la cadena de bloques bloxberg

En esta sección llamaremos al contrato inteligente Verify de bloxberg para obtener los datos, y obtendremos el archivo PDF original de IPFS utilizando los metadatos JSON.

Obtenga los datos de verificación:

&#10005 eventsList = BlockchainTransactionData[txid, "EventList", BlockchainBase -> "Bloxberg"];
&#10005 verifyData = BlockchainContractValue[ eventsList[[1]]["Address"], <| "Function" -> Typed["retrieveResearchData", {"bytes32"} -> {"string", "string", "bytes32", "string", "bool"}], "Inputs" -> eventsList[[1]]["Data"]|>, BlockchainBase -> "Bloxberg"];
&#10005 Dataset[Association["StringCheckSum" -> verifyData[[1]], "IPFS" -> verifyData[[2]], "ResearchID" -> verifyData[[3]], "Timestamp" -> FromUnixTime[ToExpression[verifyData[[4]]]], "DataExists" -> verifyData[[5]]]]

Obtenga el CID de los metadatos de IPFS:

&#10005 ipfsCID = verifyData[[2]]

Descargue los metadatos de IPFS:

&#10005 verifyMetadataFile = ExternalStorageDownload[ipfsCID, ExternalStorageBase -> "IPFS"]

Importe los metadatos:

&#10005 verifyMetadata = Import[verifyMetadataFile, "RawJSON"];
&#10005 Dataset[verifyMetadata]

Descargue el documento de investigación:

&#10005 ExternalStorageDownload[verifyMetadata["FileCID"]]

Manténgase conectado: cómo causar un impacto en la Web3


Consideramos que la siguiente etapa del desarrollo del internet es un movimiento hacia la descentralización de páginas web y servicios. La integración de Wolfram Language con IPFS y Filecoin ampliará el rango de aplicaciones, servicios y análisis que las personas puedan crear, sin importar su experiencia de programación. Nuestro plan es ampliar nuestra colaboración con IPFS para incluir una integración de la cadena de bloques Filecoin, utilizando Filecoin para almacenamiento, manipulación simbólica de datos de IPFS y Filecoin, ejemplos analíticos, características educativas y más.

Esperamos contar con ejemplos de distintos campos y usuarios en el futuro:

Análisis de datos: tomar datos de Filecoin e IPFS y realizar análisis en los documentos, todo mediante Wolfram Language NFT: utilizar cuadernos Wolfram, Wolfram Language y conexiones con cadenas de bloques para crear, descargar y utilizas los NFT Círculos académicos: almacenar datos para uso abierto y comprensible, y un intercambio sofisticado de investigaciones Comercio: trabajar con el Asesoramiento Técnico Wolfram para explorar prototipos avanzados y exploraciones Desarrolladores: crear aplicaciones avanzadas por medio de capacidades computacionales

¡Nos encontramos en la cúspide de resaltar la utilidad de IPFS y las cadenas de bloques mediante un magnífico ejemplo acerca de los NFT que será divertido, emocionante y GRATUITO!

Conéctese con Wolfram Blockchain Labs para descubrir más sobre cómo integrar su cadena de bloques en Wolfram Language. Conéctese con el Asesoramiento Técnico Wolfram para iniciar un proyecto de cadena de bloques.
Academics

Graduate to the Wolfram Early Professionals Program

Each year, 73 billion students use Mathematica and the Wolfram Language at their universities. Okay, that might be an exaggeration, but as the person leading the Wolfram sales team, I see my group fielding questions from tons of students on their options for using Mathematica after they graduate. So perhaps it sometimes just feels like 73 billion.

And that’s a good thing—we’re always excited to help these brilliant young minds use Mathematica and the Wolfram Language to do basic repetitive tasks, from solving integrals or graphing trig functions in their undergraduate work to visualizing complex sets of data or building an AI system for their graduate-level research.

Announcements & Events

Introducing Wolfram Application Server

Wolfram Application Server is a new platform developed by Wolfram Research enabling customers to deploy Wolfram Language–powered APIs and webpages into a scalable, highly available enterprise cluster.

Wolfram Application Server lets you:

manage data exchange in your deployments with a robust external services framework. create applications using the Wolfram Natural Language Understanding (NLU) System, the key semantic interpretation technology behind Wolfram|Alpha and Wolfram Language. generate content based on time and location, assign custom endpoints and integrate curated content from the Wolfram Knowledgebase.

We have designed Wolfram Application Server for customers who for regulatory, security or business reasons may not wish to deploy onto the Wolfram Cloud but prefer to host their Wolfram Language applications on clusters they control.

Announcements & Events

Static Analysis Tools in the Wolfram Language

Catching Common Problems

Finding bugs and fixing them is more than a passion of mine—it’s a compulsion. Several years ago, as a QA developer, I created the MUnit unit testing framework for the Wolfram Language, which is a framework for authoring and running unit tests in the language. Since then, I’ve created more tools to help developers write better Wolfram Language code while seamlessly checking for bugs in the process.

Writing good tests requires a lot of knowledge and a great deal of time. Since we need to be able to test and resolve bugs as quickly as possible in order to release new features on schedule, we turn to static analysis to be able to do so.

Announcements & Events

Launching Version 12.2 of Wolfram Language & Mathematica: 228 New Functions and Much More…

Yet Bigger than Ever Before

When we released Version 12.1 in March of this year, I was pleased to be able to say that with its 182 new functions it was the biggest .1 release we’d ever had. But just nine months later, we’ve got an even bigger .1 release! Version 12.2, launching today, has 228 completely new functions!

Best of Blog

Two Lines of Code to Bulletproof Encryption: Advancements in Cryptography Development in the Wolfram Language

Cryptography functionality in the Wolfram Language has been growing significantly ever since it was originally released in Version 10.1. In the latest release, we added support for generation and verification of digital signatures for expressions, files and cloud objects; you can encrypt or digitally sign anything—from simple messages to images or code. In order to maintain our users’ security and safety, we base our algorithms on OpenSSL libraries. While OpenSSL normally requires a great deal of experience to use, integration with the Wolfram Language has made it simple.
Academics

Quantum Chemistry: Step-by-Step Chemistry Series

After working our way through chemical reactions, solutions and structure and bonding, we close out our step-by-step chemistry series with quantum chemistry. Quantum chemistry is the application of quantum mechanics to atoms and molecules in order to understand their properties.

Have you ever wondered why the periodic table is structured the way it is or why chemical bonds form in the first place? The answers to those questions and many more come from quantum chemistry. Wolfram|Alpha and its step-by-step chemistry offerings won’t make the wave-particle duality any less weird, but they will help you connect chemical properties to the underlying quantum mechanical behavior.

The step-by-step solutions provide stepwise guides that can be viewed one step at a time or all at once while working through a problem. Read on for example problems covering orbital diagrams, frequency and wavelength conversions, and mass-energy equivalence.