Commit 68b240cc authored by Kelvin Fichter's avatar Kelvin Fichter

Light comments for proxy contracts

parent b1c90b74
...@@ -8,49 +8,67 @@ import { Proxy_Manager } from "./Proxy_Manager.sol"; ...@@ -8,49 +8,67 @@ import { Proxy_Manager } from "./Proxy_Manager.sol";
* @title Proxy_Forwarder * @title Proxy_Forwarder
*/ */
contract Proxy_Forwarder { contract Proxy_Forwarder {
/*******************************************
* Contract Variables: Contract References *
*******************************************/
Proxy_Manager private proxyManager; Proxy_Manager private proxyManager;
/***************
* Constructor *
***************/
/**
* @param _proxyManager Address of the Proxy_Manager.
*/
constructor( constructor(
address _proxyManager address _proxyManager
) { ) {
proxyManager = Proxy_Manager(_proxyManager); proxyManager = Proxy_Manager(_proxyManager);
} }
/********************
* Public Functions *
********************/
/**
* Forwards calls to the appropriate target.
*/
fallback() fallback()
external external
{ {
address target = _getTarget(); address target = _getTarget();
bytes memory data = msg.data;
require( require(
target != address(0), target != address(0),
"Proxy does not have a target." "Proxy does not have a target."
); );
assembly { (bool success, bytes memory returndata) = target.call(msg.data);
let success := call(
gas(),
target,
0,
add(data, 0x20),
mload(data),
0,
0
)
let size := returndatasize() if (success == true) {
let returndata := mload(0x40) assembly {
mstore(0x40, add(returndata, add(size, 0x20))) return(add(returndata, 0x20), mload(returndata))
returndatacopy(add(returndata, 0x20), 0, size)
if iszero(success) {
revert(add(returndata, 0x20), size)
} }
} else {
return(add(returndata, 0x20), size) assembly {
revert(add(returndata, 0x20), mload(returndata))
} }
} }
}
/**********************
* Internal Functions *
**********************/
/**
* Determines the appropriate target.
* @return Target to forward requests to.
*/
function _getTarget() function _getTarget()
internal internal
view view
......
...@@ -5,12 +5,21 @@ pragma solidity ^0.7.0; ...@@ -5,12 +5,21 @@ pragma solidity ^0.7.0;
* @title Proxy_Manager * @title Proxy_Manager
*/ */
contract Proxy_Manager { contract Proxy_Manager {
/*******************************************
* Contract Variables: Internal Accounting *
*******************************************/
mapping (bytes32 => address) private proxyByName; mapping (bytes32 => address) private proxyByName;
mapping (bytes32 => address) private targetByName; mapping (bytes32 => address) private targetByName;
mapping (address => bytes32) private nameByProxy; mapping (address => bytes32) private nameByProxy;
mapping (address => bytes32) private nameByTarget; mapping (address => bytes32) private nameByTarget;
/********************
* Public Functions *
********************/
function setProxy( function setProxy(
string memory _name, string memory _name,
address _proxy address _proxy
...@@ -152,6 +161,10 @@ contract Proxy_Manager { ...@@ -152,6 +161,10 @@ contract Proxy_Manager {
} }
/**********************
* Internal Functions *
**********************/
function _getNameHash( function _getNameHash(
string memory _name string memory _name
) )
......
...@@ -8,14 +8,32 @@ import { Proxy_Manager } from "./Proxy_Manager.sol"; ...@@ -8,14 +8,32 @@ import { Proxy_Manager } from "./Proxy_Manager.sol";
* @title Proxy_Resolver * @title Proxy_Resolver
*/ */
contract Proxy_Resolver { contract Proxy_Resolver {
/*******************************************
* Contract Variables: Contract References *
*******************************************/
Proxy_Manager internal proxyManager; Proxy_Manager internal proxyManager;
/***************
* Constructor *
***************/
/**
* @param _proxyManager Address of the Proxy_Manager.
*/
constructor( constructor(
address _proxyManager address _proxyManager
) { ) {
proxyManager = Proxy_Manager(_proxyManager); proxyManager = Proxy_Manager(_proxyManager);
} }
/********************
* Public Functions *
********************/
function resolve( function resolve(
string memory _name string memory _name
) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment