-
-
Labels: Blockchain, OSS, 開発よもやま
SlackでEtherを送りあえるサービスをLambdaで実装した話
インターンの水島です。
現在は開発部でCREチームとブロックチェーンチームに参加しており、来年度ランサーズに新卒として入社する予定です。
今回はブロックチェーン実証実験の一環として、Slack上でEtherを送り合うことができる社内インフラのLambda化を行なったので経緯を含めて発信したいと思います。
ブロックチェーンチームに入った経緯
2年程前から暗号通貨に興味を持ち、情報を追っかけたり、論文を読んだりしているうちにブロックチェーンそのものの面白さを感じるようになっていました。
その関係で個人でもブロックチェーンの論文をチェックしたり、CryptoZombiesなどで学習したりしていましたが、一体この技術で何ができるのかと結局わからぬままでした。
インターンとして参加していたランサーズでブロックチェーンのプロジェクトもあると聞いたので、これは!!と思い、開発部長に直談判し、ブロックチェーンチームに参加しました。
この時、実力のわからないインターンをさくっとプロジェクトに入れるなんてかなり自由度が高い会社だなと感じたのを覚えています。
実装内容
今回僕が担当した内容は一緒にプロジェクトを進めているblockbaseさんから頂いたコードをLambdaで動くようにする部分でした。
blockbaseさんから頂いたコードは以下のリポジトリで確認可能です。
https://github.com/block-base/ethertip
機能としては、大まかにまとめると
- Slack上でスタンプを押すことで相手にtipを送る
- DynamoDBに保存されたtipやアドレスなどの情報を確認できる
- 溜まった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よりご応募ください。
【中途採用】
フロントエンドエンジニア
サーバーサイドエンジニア
コーポレートエンジニア
SREエンジニア
【新卒採用・その他】
21・22新卒
その他採用情報
関連記事
-
-
ランサーズ開発合宿2017@湯河原温泉おんやど恵
こんにちは。ランサーズの @sayaです。 先月末、湯河原温泉で第3回開発合宿をしてきたので、その模様をレポートします。 今回は幸運にも「湯かけまつり」という楽しいお祭りの開催と重なり、大いに盛り上がる合宿となりました。 テーマ 今回のテーマは「開発を最大化す …
-
-
PHP、CakePHPバージョンアップの決断
インフラエンジニアの金澤です。 この度、ランサーズ稼働環境(PHP + CakePHP)のバージョンアップを決断しました。 まずは私から、その経緯と計画についてお話いたします。 バージョンアップ決断の理由 ランサーズは、2008年にサービスを開始しました。 現 …
-
-
青森⇔東京のフリーランス
はじめに はじめまして。 ランサーズ Advent Calendar 2017 19日目を担当します、あいない です。11月からジョインしています。 今回は、(ラッキーな)機会をいただいたので、週末は青森・平日は東京と行き来しているフリーランスとして書きます。 …