ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  Blockchain, OSS, 開発よもやま 投稿者:mizushima

SlackでEtherを送りあえるサービスをLambdaで実装した話

インターンの水島です。

現在は開発部でCREチームとブロックチェーンチームに参加しており、来年度ランサーズに新卒として入社する予定です。

今回はブロックチェーン実証実験の一環として、Slack上でEtherを送り合うことができる社内インフラのLambda化を行なったので経緯を含めて発信したいと思います。

ブロックチェーンチームに入った経緯

2年程前から暗号通貨に興味を持ち、情報を追っかけたり、論文を読んだりしているうちにブロックチェーンそのものの面白さを感じるようになっていました。

その関係で個人でもブロックチェーンの論文をチェックしたり、CryptoZombiesなどで学習したりしていましたが、一体この技術で何ができるのかと結局わからぬままでした。

インターンとして参加していたランサーズでブロックチェーンのプロジェクトもあると聞いたので、これは!!と思い、開発部長に直談判し、ブロックチェーンチームに参加しました。

この時、実力のわからないインターンをさくっとプロジェクトに入れるなんてかなり自由度が高い会社だなと感じたのを覚えています。

実装内容

今回僕が担当した内容は一緒にプロジェクトを進めているblockbaseさんから頂いたコードをLambdaで動くようにする部分でした。
blockbaseさんから頂いたコードは以下のリポジトリで確認可能です。
https://github.com/block-base/ethertip

今回の実装における最終的な構成図は以下のようになりました。

機能としては、大まかにまとめると

  1. Slack上でスタンプを押すことで相手にtipを送る
  2. DynamoDBに保存されたtipやアドレスなどの情報を確認できる
  3. 溜まったtipを引き出したいときにEthereumネットワークにデプロイしているコントラクトから引き出す。

となります。

今回はERC725というEthereum上の規格を使い、Etherを引き出すときに認証を行なっています。

またそれに加えERC725で扱うIdentityに対してClaimの管理ができるようになるERC735も導入しています。

AWSとの格闘

僕は今までAWSを触ったことがなく、AWSに関してAmazonがやってるクラウドサービス群ぐらいの認識ぐらいしかありませんでした。ほぼほぼ一からのスタートでしたが、いい機会だと思って取り組みました。

概念導入としてLambdaの本をチュートリアル的に一冊こなしました。
ここでLambdaとはどういうものか、使うにはどのような知識が必要かを大体把握しました。他にもいいなと思った本があるのでリンクを貼っておきます。

Lambda学習のオススメ本
AWS Lambda実践ガイド

実践AWS Lambda 「サーバレス」を実現する新しいアプリケーションのプラットフォーム

この過程でLambdaの面白さにハマり、個人でもLambdaを使ったserverlessアプリケーションの開発も行うようになりました。

今回は大まかな実装が完了している点、Expressを導入している点からaws-serverless-expressというモジュールを利用しました。

このモジュールはCloudformationでの実装を前提としていましたが、Cloudformationを使用するとプログラムの柔軟性が損なわれてしまうため、API Gatewayなど諸々の設定はこちら側で行いました。時間はかかりましたが、結果としてAPI Gatewayについてしっかり学ぶことができたので良かったと感じています。

頂いたコードをLambdaに対応させる部分でうまくいかなかったり、IAMロールが正しく設定されておらず認証で詰まったり、LambdaでのCORS認証で詰まったり、つまづくことも多かったです。

しかし、幸いなことにランサーズには優秀で親切な先輩エンジニア諸氏がおられましたので何とか実装にまで持っていくことができたと思います。

まとめ

今回の実装を通してAWSとEthereumベースのブロックチェーンに関する知識がかなり深まったと感じます。すごく面白い分野なので、これからも開発を続けたいと思います。

実装の過程で上手くいかないことは多かったですが、それよりも優秀な方達にサポートされている環境で新しいことに挑戦できることがすごく楽しかったです!

最後に今回実装したEthertipのリポジトリを載せておきますので、一度見てみてください!https://github.com/LancersDevTeam/ethertip

興味を持った方はご意見、ご質問を頂けると嬉しいです。お待ちしてます!

ここまでご覧頂きありがとうございました。

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

thumbnail
日々のスケジュール管理

この記事はランサーズ Advent Calendar 2016の12日目です。 はじめまして、最近ニュースでFitbitがPebbleを買収することが確定してしょんぼりな プロダクト開発部のakin.です。 今回はAdvent Calendarの場を借りて、ボ …

thumbnail
青森⇔東京のフリーランス

はじめに はじめまして。 ランサーズ Advent Calendar 2017 19日目を担当します、あいない です。11月からジョインしています。 今回は、(ラッキーな)機会をいただいたので、週末は青森・平日は東京と行き来しているフリーランスとして書きます。 …

2017年変えたことTips6

ランサーズ Advent Calendar 2017の17日目担当のshinです。 今年は新しいことに取り組む機会も多かったので、身の回りの環境など変えて効果があったものを紹介したいと思います。 働く環境を変えた before チーム内外のコミュニケーションの …