アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

Solidity

拡張・変更可能なContractパターン solidity-proxy

EthereumでContractを作って運用を考えるとやっぱり頭を悩ませるのが、コードの変更が不可能な事。 基本的にContractであまり複雑な事をすべきではないとは思うけど、それでもやっぱりサービスの成長とともにコードのアップデートも必要となる。 libraryやde…

Solidityのstorage,memoryキーワードとは何か?

Solidityのlibraryのメソッドはだいたいこんな形の定義になる。 function (StructHoge storage self, uint _val) {最初の引数にstorageキーワードをつけないとコンパイルエラーになっちゃうから必須のキーワードのようだ。 で、このstorageが何のために必要…

Solidityの外部ライブラリの呼び出し方いろいろ

Solidityで用意されている外部のcontractのメソッドを呼び出すdelegatecallのtipsみたいなものをまとめてみました。 思いついた使い方は以下の4通り。A. library定義を利用して呼び出す B. 外部Contractのaddressをあらかじめ準備してdelegatecallメソッド…

Contractのcall, delegatecallの時に可変長引数を渡す方法

Solidityでdelegatecallのサンプルを試していた時に、通常の呼び出しだとuint[]やstringなどのいわゆる可変長な型を引数にとるメソッドのdelegatecallが思った通りに動いてくれなくて、その原因や実装方法について調べました。具体的には以下のstackexchange…

etherの受け取り可能なContractの作成

今回はetherの送金を受け付ける事ができるContractの作成方法をまとめます。 当たり前すぎな事なのか、意外に記事がなかったので。。。Solidityの公式ドキュメントで記述のある箇所はこちら Function Modifiers 結論を先にいうと、etherを受け取りたいメソッ…