diff --git a/blockchain_integration/pi_network/pi-network-layer2-scaling/contracts/state-channels/ChannelManager.sol b/blockchain_integration/pi_network/pi-network-layer2-scaling/contracts/state-channels/ChannelManager.sol new file mode 100644 index 000000000..e3be6767b --- /dev/null +++ b/blockchain_integration/pi_network/pi-network-layer2-scaling/contracts/state-channels/ChannelManager.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "./StateChannel.sol"; + +contract ChannelManager { + mapping(address => mapping(address => StateChannel)) public channels; + event ChannelCreated(address indexed participantA, address indexed participantB, address channelAddress); + + function createChannel(address _participantB) external { + require(_participantB != msg.sender, "Cannot create channel with self"); + StateChannel channel = new StateChannel(msg.sender, _participantB, address(this)); + channels[msg.sender][_participantB] = channel; + emit ChannelCreated(msg.sender, _participantB, address(channel)); + } + + function getChannel(address _participantA, address _participantB) external view returns (StateChannel) { + return channels[_participantA][_participantB]; + } +}