Jun 14, 2024 by Arnaud Stoz | 431 views
If you already research about web3 and decentralization, you probably stumbled on the Inter Planetary File System (IPFS). However if you wanted to use the API provided by the IPFS in one of your go program, you probably went crazy trying to understand how to use the API to finaly realize the documentation is not even up to date and refer to deprecated library. The IPFS-API module try to fill this gap and provide a basic yet simple to use package to interact with an IPFS RPC API endpoint.
The IPFS-API module contain only one package: the client package.
The Client package contains three simple functions:
cat
command. Retrieve the content of a file based on its CID
.With those three simple functions, all basic operation can be achieved which mean uploading a file to the IPFS network and the retrieve that file based on it’s CID.
Here is a very simple program to showcase the possibility of this small module.
It first connects to a node running locally, then upload a test file and finally retrieve this file based on the CID
.
package main
import (
"fmt"
"io"
ipfsapi "github.com/stolab/ipfs-api/client"
)
func main() {
//initialize the client
client, err := ipfsapi.NewLocalApi()
if err != nil {
panic(err)
}
//add a file to the IPFS network and display its CID
rep, err := client.Add("/tmp/test.txt")
if err != nil {
panic(err)
}
CID := rep.Hash
fmt.Printf("CID of the uploaded package: %s\n", CID)
//retrieved the file based on it's CID and display its content
r, err := client.Cat(CID)
if err != nil {
panic(err)
}
defer r.Body.Close()
byteContent, err := io.ReadAll(r.Body)
if err != nil {
panic(err)
}
fmt.Printf("Content of the file: %s\n", string(byteContent))
}
With this small module you can easily interact with IFPS node via the RPC API in all your go program.
This blog post is licensed under CC BY-SA 4.0
Conference Blockchain Cyber Situation Awareness
Blockchain Ethereum
If you have already played with geth, you probably have already noticed the --dev option. This option is very handy when you want to quickly start a node to test something. However, you might have found that the developer account which is automatically set is a random account. This randomness can be annoying when trying to automate some testing tasks. The good news is that there is a way to set this developer account. That’s what will be explaine...Blockchain APT Detection
A few weeks ago, we had the opportunity to present a short webinar on two topics currently under research in our department: