Skip to content
GAL - General Access Layer

GAL - General Access Layer

Your new contract administrator

Created on 18th September 2022

•

GAL - General Access Layer

GAL - General Access Layer

Your new contract administrator

The problem GAL - General Access Layer solves

Organizations and teams developing web3 applications are exposed to the risk of losing ownership and control over their own contracts in the case of a leaving teammate, losing the deployer's private keys, or a planned attack.

  • Whenever an Ownable contract belongs to a single wallet a team is exposed to this unnecessary risk of losing ownership over it.
  • Developers in a team may need to access some onlyOwner methods but must have no right over others.
  • Both developers and administrators may need to take multiple actions with deployed contracts, hence the need for batch calling.
  • An easy and quick way is always needed to revoke access rights of a wallet over all company / team assets
  • GCM takes out the single point of failure.

Challenges we ran into

Batch calling multiple methods

Problem

In Solidity we wanted to slice the bytarray information that we received as calldata. It seemed possible, but the end result was incorrect.

Solution

We rewrote the code with assembly using memory storage for the bytearray

function batchCall(bytes memory bytesData) public {
    uint16 numberOfCalls;
    uint256 ptr;
    
    assembly {
        // set read pointer
        ptr := add( bytesData, 32 )
        numberOfCalls := shr( 240, mload( ptr ) )
        // shift pointer to data Id
        ptr := add( ptr, 2 )
        // move free memory pointer
        mstore(0x40, msize()) 
    }
    ...........................
    

Front-end

Problem

We are here with a team of 4, without any front-end developer :) We started building the front-end part of GAL with zero react knowledge.

Solution

After multiple difficulties we decided to focus more on the smartcontract, and we wrote tests and did transactions to prove our contract's usefulness.

Beer

Problem

During the event we were really thirsty for some beers. Of course, if we have (too many) beers, we can not be productive, so we did not drink beers and stood with our thirst for it.

Solution

At the end of every day we had a beer together with many of the competitors, and had an awesome closure for both Friday and Saturday. Thank you ETH B3RLIN.

Technologies used

Discussion

Builders also viewed

See more projects on Devfolio