keybase.us Custodian smart contracts and Sending money to anyone

Jeevanjot Singh
3 min readNov 1, 2020

Greetings Everyone

I am developing three projects which are very similar in their mechanics but require different implementation for each of them. Because they are different products for different use cases.

Starting with:

Keybase.us

Keybase.us will be a website for users to send/transfer Ethereum native tokens or other Erc20 tokens through social media platforms, Like Twitter for e.g.

Deployed Instance On Kovan (19 days ago from today)

https://kovan.etherscan.io/address/0x7fb9490bbA3D9cc2856Bd533FCAcbdBF7c19fB03#writeContract

How It Works

  • Users send their cryptocurrency (ETH tokens) to the smart contract with a Twitter username who they want to send currency.
Send Payment function on Etherscan from this contract

Here 1 ether to username genievot

My Chainlink node processing it.

It will get a contract the author id of that username(We can’t rely on username, It can be changed) and save the value belonging to the receiver safely.

  • Now user get a notification to collect his funds(Thorugh many ways, It can be my Twitter page referring username to notify it, etc.)
  • Now the user comes to the smart contract(A very new user) and first he has to validate himself that he is indeed the owner of what Twitter account.
  • Post your Ethereum wallet address from where you do transactions and where you receive your funds and copy its Tweet ID
Posting my Ethereum address only from my Twitter account and copy tweet id
Calling verify function with tweet id as an argument to verify
Chainlink node processing it and sending back address

Now it will save the address, Due to the current limitation of Chainlink I can only send one value of the limited length

  • Now one more call from the same address that you posted on twitter to fetch the author id of your account.
Calling register user to fetch
  • Once done you are ready to withdraw

It might sound a lot but with a front end, it will be a 1 or 2 step process. But will cost you some LINK tokens (or extra ETH for On chain swap for Link) For which I have found a better solution and implementing this with it.

  • To check how many Ethereum I have available withdraw, Just check what is your author id with 1st function by moving to the Read Section of Etherscan for this contract.
Address to author id of Twitter
Check your balance from your Twitter author id
  • Now Withdraw your funds, When you click withdraw it will transfer you all the funds you have currently in this contract, in my scenario it was 1 ETH, The input here is not required actually, It can be 0, That’s just a payable function.
Withdraw funds with nothing to send here.

And that’s how you can send money to any Twitter user.

Thank you for taking the time to read it. If you like this project to be developed fully, You can support the grant here. https://gitcoin.co/grants/1506/keybaseus-send-ethereum-to-anyone-with-social-medi

--

--