A method at a source node in a peer-to-peer call network , the method comprising: generating an initiation request to initiate a communications channel between the source node and a destination node (112-1) in the peer-to-peer call network, the initiation request including signaling data for the source node to allow the destination node to establish a signaling channel; sending the initiation request (310-1) to the peer-to-peer call network, to be propagated by the peer-to-peer call network until it reaches the destination node, by committing the initiation request as a transaction to a local copy of a distributed call ledger stored at the source node and broadcasting the transaction to other nodes in the peer-to-peer call network to update the distributed call ledger; responsive to sending the initiation request: obtaining, from a distributed file network, internal state data for the source node, the internal state data defining call control logic for the source node; and triggering a decentralized application at the source node configured to manage the call control logic for the source node based on the internal state data; when the signaling channel between the source node and the destination node has been established, establishing (325-2) a peer-to-peer media channel between the source node and the destination node, wherein the signaling channel and the media channel form the communications channel between the source node and the destination node; and managing, via the decentralized application, the call control logic of the communications channel for the source node based on the internal state data. generating an initiation request to initiate a communications channel between the source node and a destination node (112-1) in the peer-to-peer call network, the initiation request including signaling data for the source node to allow the destination node to establish a signaling channel; sending the initiation request (310-1) to the peer-to-peer call network, to be propagated by the peer-to-peer call network until it reaches the destination node, by committing the initiation request as a transaction to a local copy of a distributed call ledger stored at the source node and broadcasting the transaction to other nodes in the peer-to-peer call network to update the distributed call ledger; responsive to sending the initiation request: obtaining, from a distributed file network, internal state data for the source node, the internal state data defining call control logic for the source node; and triggering a decentralized application at the source node configured to manage the call control logic for the source node based on the internal state data; when the signaling channel between the source node and the destination node has been established, establishing (325-2) a peer-to-peer media channel between the source node and the destination node, wherein the signaling channel and the media channel form the communications channel between the source node and the destination node; and managing, via the decentralized application, the call control logic of the communications channel for the source node based on the internal state data. obtaining, from a distributed file network, internal state data for the source node, the internal state data defining call control logic for the source node; and triggering a decentralized application at the source node configured to manage the call control logic for the source node based on the internal state data; when the signaling channel between the source node and the destination node has been established, establishing (325-2) a peer-to-peer media channel between the source node and the destination node, wherein the signaling channel and the media channel form the communications channel between the source node and the destination node; and managing, via the decentralized application, the call control logic of the communications channel for the source node based on the internal state data. <EOS>