From 9bce4c4169578e22d6be7c4e323f10ee12a78774 Mon Sep 17 00:00:00 2001 From: Guilherme Dantas Date: Tue, 30 May 2023 10:49:29 -0300 Subject: [PATCH] feat(contracts): add input relay interface and base contract --- .../rollups/contracts/inputs/IInputRelay.sol | 24 ++++++++++++++ .../rollups/contracts/inputs/InputRelay.sol | 33 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 onchain/rollups/contracts/inputs/IInputRelay.sol create mode 100644 onchain/rollups/contracts/inputs/InputRelay.sol diff --git a/onchain/rollups/contracts/inputs/IInputRelay.sol b/onchain/rollups/contracts/inputs/IInputRelay.sol new file mode 100644 index 00000000..15fc0571 --- /dev/null +++ b/onchain/rollups/contracts/inputs/IInputRelay.sol @@ -0,0 +1,24 @@ +// Copyright Cartesi Pte. Ltd. + +// SPDX-License-Identifier: Apache-2.0 +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use +// this file except in compliance with the License. You may obtain a copy of the +// License at http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +pragma solidity ^0.8.8; + +import {IInputBox} from "./IInputBox.sol"; + +/// @title Input Relay interface +interface IInputRelay { + // Permissionless functions + + /// @notice Get the input box used by this input relay. + /// @return The input box + function getInputBox() external view returns (IInputBox); +} diff --git a/onchain/rollups/contracts/inputs/InputRelay.sol b/onchain/rollups/contracts/inputs/InputRelay.sol new file mode 100644 index 00000000..501407c4 --- /dev/null +++ b/onchain/rollups/contracts/inputs/InputRelay.sol @@ -0,0 +1,33 @@ +// Copyright Cartesi Pte. Ltd. + +// SPDX-License-Identifier: Apache-2.0 +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use +// this file except in compliance with the License. You may obtain a copy of the +// License at http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +pragma solidity ^0.8.8; + +import {IInputRelay} from "./IInputRelay.sol"; +import {IInputBox} from "./IInputBox.sol"; + +/// @title Input Relay +/// @notice This contract serves as a base for all the other input relays. +contract InputRelay is IInputRelay { + /// @notice The input box used by the input relay. + IInputBox internal immutable inputBox; + + /// @notice Constructs the input relay. + /// @param _inputBox The input box used by the input relay + constructor(IInputBox _inputBox) { + inputBox = _inputBox; + } + + function getInputBox() external view override returns (IInputBox) { + return inputBox; + } +}