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

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

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

インターンの水島です。

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

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

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

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

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

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

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

実装内容

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

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

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

  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
タスク管理改善を追い求めたら モブプログラミングになった話

ビジネスインフラの土屋です。 社内の業務フロー構築、改善を担当しています。 2017.08.23、Lancers新しい働き方LABで、GYOMU Hackers Night vol.3というイベントが開催されました。 ビジネスチームを支えるシステム管理者や業務 …

githubのissue, pull request 検索をハックする!

こんにちは、エンジニアの上野です。 ランサーズストア の開発責任者として日々奮闘中です。 今日は、エンジニアみんな大好きgithubの検索クエリをハックする!!と題して、検索クエリの解説をしようと思います。githubではissueやpull requestを …

PHP、CakePHPバージョンアップの決断

インフラエンジニアの金澤です。 この度、ランサーズ稼働環境(PHP + CakePHP)のバージョンアップを決断しました。 まずは私から、その経緯と計画についてお話いたします。 バージョンアップ決断の理由 ランサーズは、2008年にサービスを開始しました。 現 …