oasisprotocol / sapphire-paratime

The Sapphire ParaTime monorepo.
https://oasisprotocol.org/sapphire
Apache License 2.0
34 stars 24 forks source link

sapphire-contracts: Add EIP-4361 SIWE parser and base contract #332

Closed matevz closed 1 month ago

matevz commented 1 month ago

Fixes #327

This PR:

TODO:

Before (signed queries)

contract MyContract {
  address private _owner;

  modifier onlyOwner() {
    if (msg.sender != _owner) {
      revert("not allowed");
    }
    _;
  }

  constructor() {
    _owner = msg.sender;
  }

  function getSecretMessage() external view onlyOwner returns (string memory) {
    return "Very secret message";
  }
}

After (on-chain auth)

import {SiweAuth} from  "@oasisprotocol/sapphire-contracts/contracts/auth/SiweAuth.sol"

contract MyContract is SiweAuth {
  address private _owner;

  modifier onlyOwner(bytes calldata bearer) {
    if (authMsgSender(bearer) != _owner) {
      revert("not allowed");
    }
    _;
  }

  constructor(string memory domain) SiweAuth(domain) {
    _owner = msg.sender;
  }

  function getSecretMessage(bytes calldata bearer) external view onlyOwner(bearer) returns (string memory) {
    return "Very secret message";
  }
}
netlify[bot] commented 1 month ago

Deploy Preview for oasisprotocol-sapphire-paratime canceled.

Name Link
Latest commit 679fc0e7787e4e7fcddc92ace6d4fd56c01cbf7b
Latest deploy log https://app.netlify.com/sites/oasisprotocol-sapphire-paratime/deploys/669a677281915f0008633571