# lotus and go-ipfs interactions

lotus (opens new window) is a Go implementation of the Filecoin protocol. There are several protocol implementations including implementations in other languages such as Rust (forest (opens new window) implementation) and C++ (fuhon (opens new window) implementation). The core lotus node runs the blockchain system, executes storage and retrieval deals, performs data transfers, supports block producer logic, and syncs and validates the Filecoin blockchain. Lotus also provides a separate process for storage mining. Filecoin storage miners contribute to the network by producing sector commitments and Proofs-of-Spacetime to prove they have been correctly storing storage client data. Read more about the interactions between storage miners and storage clients.

go-ipfs (opens new window) is a Go implementation of the IPFS protocol (opens new window). There are also several IPFS implementations, including js-ipfs (opens new window).

lotus and go-ipfs nodes speak several of the same protocols: libp2p (opens new window) for networking, bitswap (opens new window) and graphsync (opens new window) for data transfer, IPLD (opens new window) for data structures and formats, and more. Having active lotus and go-ipfs daemons on your machine enables a number of features. For example, you can import and preserve data that is discoverable through the IPFS public network DHT (opens new window) directly into your lotus node and onto the Filecoin network. To learn more about how Filecoin and IPFS interact, read our page on IPFS and Filecoin.

IPFS and Filecoin nodes interact with each other via libp2p and IPLD, among other protocols.

# Resources