Lodge Letter #53

FoxFortyTwo 🦊
Elk Finance
Published in
5 min readJul 31, 2022

A little splash of green, the Fear and Greed Index races into double figures, ergo the bear has gone! But is it all too soon? Will FOMO grip the retail hearts once again? Are whales and institutions preparing to send the markets downwards once more?

Bull markets are replete with stories of overnight successes, of big gains and of missed opportunities. While such trades and opportunities are all easily rued, along with selling too early, selling too late or not selling at all, the fact remains that you have to be at the races to place your bets!

Some wagers (or investments as many traders like to call them) feel like the right move, especially when provided or backed by large entities (we’re looking at you 3AC, Voyager Digital and Terra; to name three disastrous culprits of excess and poor forethought). Regrettably the mighty have fallen, taking the meek with them.

But Web3 and crypto are strong. We endure. We build. We do our best work in the bear.

It should be apparent that some projects, protocols, blockchains and proponents of a decentralized Web3 are looking to make a genuine difference. Not just financially, but socially and politically; for freedom, ownership and sovereignty of data, self and money. Some crypto-mainstays have the benefit of a first-mover advantage, they may have a charismatic leader, they may have innovative tech and a determination to succeed in a less showy way. This history, however brief, doesn’t mean that the next generation of products and ideals cannot succeed, it means they have to be better, be focused, and be ready to fight their corner.

Consider the “cut and paste saga” on iOS. We all wanted it. Android and other mobile operating systems had it. But Apple wanted to get it working just right. Call it “Baby Bear Syndrome” if you will.

This is where we are with Elk.

  • Daddy Bear’s Bridge is too expensive
  • Mummy Bear’s Bridge is too fragmented
  • Baby Bear’s ElkNet is just right

If this analogy is continued, then Elk is still just an infant. The calf needs nurturing and guiding. It needs time to grow and learn. It needs to add the best partners to explore the BaaS SDK. It needs patience for the ELK utility token to leap upwards as destiny decrees.

Yes there are bridges out there. However, they aren’t looking to be truly decentralized, they aren’t looking to bring value to their token holders through revenue sharing, they won’t bring opportunities for others to use their centralized technology; because they both can’t, and don’t want to.

Elk is here for the holders, it’s here for the bridgers, it’s here for Web3, Web5 and everyone who wants to control their own movement through crypto. Your assets need to go where you want them, ideally trustlessly and without the risk of your funds being whisked away by third parties. “Verify, don’t trust” is the crypto war-cry. Elk agrees and will get you where you need to be.

After all, if you can’t get to where the race starts, how can you place your bets?

Let’s get technical

The ElkNet reservoir has interface code that allows Elk BaaS clients a reservoir for their token. There is also the option to implement lock/release or burn/mint across the ElkNet. We’d like to share this with you all now. Hang on to your hats!

Reservoir:

// SPDX-License-Identifier: BUSL-1.1

pragma solidity >=0.8.0;

/*

* @author Baal and the Elk Team

* @notice IReservoir is a high-level interface for a reservoir in Elk SDK.

* Reservoirs hold tokens on each chain and are connected together via the ElkNet and its Bifrost contracts.

*/

interface IReservoir {

/*

* @dev Address of the token held in the reservoir

* @return token address

*/

function tokenAddress() external view returns (address);

/*

* @dev Amount of token available in the reservoir

* @return amount available (in token decimals)

*/

function available() external view returns (uint256);

/*

* @dev Perform a deposit from the reservoir

* @from wallet address of depositor

* @amount amount of token deposited

* @id (optional) unique deposit identifier

*/

function deposit(address from, uint256 amount, bytes32 id) external;

/*

* @dev Perform a withdrawal from the reservoir

* Note: calling this function will fail, among other things, if amount > available()

* @to wallet address of recipient

* @amount amount of token withdrawn

* @id (optional) unique withdrawal identifier

*/

function withdraw(address to, uint256 amount, bytes32 id) external;

/*

* @dev (Optional) Queries a particular deposit id. Fails if not supported or id does not exist.

* @id deposit id

* @return (from, amount) where from is the depositor address and amount is the deposited amount

*/

function deposited(bytes32 id) external view returns (address from, uint256 amount);

/*

* @dev (Optional) Queries a particular withdrawal id. Fails if not supported or id does not exist.

* @id withdrawal id

* @return (to, amount) where from is the recipient address and amount is the withdrawn amount

*/

function withdrawn(bytes32 id) external view returns (address to, uint256 amount);

}

Lock/Release:

function deposit(address _from, uint256 _amount, bytes32 _id) override external nonReentrant {

require(_amount <= token.balanceOf(_from), “Reservoir::deposit: Not enough balance to deposit!”);

token.safeTransferFrom(_from, address(this), _amount);

emit Deposited(_from, _amount, _id);

}

function withdraw(address _to, uint256 _amount, bytes32 _id) override external nonReentrant {

require(_amount <= token.balanceOf(address(this)), “Reservoir::withdraw: Not enough balance to withdraw!”);

token.safeTransfer(_to, _amount);

emit Withdrawn(_to, _amount, _id);

}

Burn/mint:

function deposit(address _from, uint256 _amount, bytes32 _id) override external nonReentrant {

require(_amount <= token.balanceOf(_from), “Reservoir::deposit: Not enough balance to deposit!”);

token.burnFrom(_from, _amount);

emit Deposited(_from, _amount, _id);

}

function withdraw(address _to, uint256 _amount, bytes32 _id) override external nonReentrant {

token.mint(_to, _amount);

emit Withdrawn(_to, _amount, _id);

}

Now there’s something to hum while you’re on your next DeFi adventure. It’s catchy!

The outlook this week is simple. It’s the summer in the Northern Hemisphere, the markets are still looking capricious, ElkNet needs time, so let’s keep patient.

There are exciting times ahead.

--

--

FoxFortyTwo 🦊
Elk Finance

Cross-chain. DeFi. Web3. (Arthera, Elk, more!) Technology start-up co-founder. Former teacher. Writer. Copyeditor. Marketer. Family first - work up from there.