ma96o / gialog Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
ERC721に準拠したシンプルなNFTを実装する際,OpenZeppelin を利用するのがデファクトスタンダード.
OpenZeppelin は Presets というコントラクトテンプレートを提供してくれているので,開発が楽に済む上に脆弱性の観点からも安心できる.
ERC721に準拠したOpenZeppelin の Presets が ERC721PresetMinterPauserAutoId
である.
Docs: Presets - OpenZeppelin Docs
source code: openzeppelin-contracts/ERC721PresetMinterPauserAutoId.sol at master · OpenZeppelin/openzeppelin-contracts
ERC721PresetMinterPauserAutoIdでは、ERC721 で提供される機能に加えて,さまざまな関数が Interface として定義されている.
その一例が以下.
特に,ロール を付与して指定したアカウントに対して,アクション権限を付与できるのが特徴的である.
これは,AccessControl というモジュールを使用することで可能にしている.
コントラクトをデプロイするアカウントには,minter と pauser のロール,そしてデフォルトの admin ロールが付与され,他のアカウントに minter と pauser の両方のロールを付与できる.
NFT を発行するために提供される基本的な機能は以下.
最近,事業計画に向けてパートナーと2人で,リサーチして,コード書いてということをしている.リサーチする,書く&話すで共有,わからないこと/ 解決されていないことがわかる,リサーチする,,みたいなループを2人で短期間で繰り返していると,割と学習効率が良い.なので,こういうの学習プロセスとして理論化されていないかな,と調べていた.
しかし,ちょうどいいのが見当たらない.教育者と学習者がいるような教育実践における理論とか組織の学習理論などは見つかるが,うまくはまらない.調べていた中で目に止まったのが「エフェクチュエーション」という経営学の理論.上述の学習プロセスとは全く関連がない.が,気になってしまったので,整理した.
今日は,Cosmos SDK のチュートリアルを進めていた.
Cosmos SDK は,ブロックチェーンを開発するための開発キットで,
Cosmos Networkに対応するブロックチェーンを比較的簡単に作れる.
開発は Go言語 で行う,Rustでも開発できるみたい.
Terra や Secret Network などが Cosmos SDK を使って構築されていて,ソースコードを読むと勉強になる.
具体的には Cosmos SDK の開発者向けインターフェイスである Ignite CLI を用いて開発を行う.
ブロックチェーンの機能は,提供されるモジュールを利用することで実装できる.
モジュールは /x で確認できる.
主要なモジュールは以下.
ローカルでテストするためのコマンドが提供されていて,$ ignite chain serve
でテストネットを起動できる.
ただ,実行で躓いている.
上記コマンドを実行すれば,ソースコードをプロジェクト名のバイナリにコンパイルしてくれて,プロジェクト名(チェーン名)+d(例えば checkers
というチェーンなら $ checkersd
)というコマンドを利用できる,とあるのだが command not found
エラーで実行できない.
ref. https://tutorials.cosmos.network/academy/3-my-own-chain/ignitecli.html#
このコマンドが使えないと,トランザクションを実行できないのでもう少し粘ってみる.
Ethereum の アカウントという概念について,きちんと理解できていなかったので整理した.
イーサリアムアカウントは、イーサリアム上でトランザクションを送信できるイーサ(ETH)残高を持つエンティティである。アカウントは、ユーザーが管理することも、スマートコントラクトとして展開することもできる。
Ethereum accounts | ethereum.org
EOA(Externally Owned Account: [外部所有アカウント])
コントラクトアカウント(CA)
いずれのアカウントも以下の機能を備えている
2つのアカウントの重要な違い
EOA | コントラクトアカウント | |
---|---|---|
作成コスト | かからない | かかる(ネットワークのストレージを使用するため) |
Txの送信 | 起点となる | Tx の受信に応答してのみ Tx を送信できる |
EOAからのTx | EOA間はETH or トークンのみ可能 | EOAからのTxはトークンの転送やコントラクトの作成等,多くのアクションを実行できる |
対応する秘密鍵 | 持つ | 持たない |
アカウント
アドレス
ウォレット
アカウントはウォレットの実態のような認識だとイメージしやすい
https://ethereum.org/ja/developers/docs/accounts
Scrapbox の運用を始めてから1か月弱が経った.
個人での運用と,複数人での運用を同時期に始めた.
僕が Scrapbox を使う最大の理由は,リンクによってページ間のネットワークを作れることにある.
リンクを有効に使うことで,最低限のコストで快適な情報管理を実現できる.
しかし,そのリンクの使い方にはクセがあり.提供される機能はミニマムなので,使いようによっては情報管理を快適にもするし煩雑で分かりづらいものにもできる.
今日はチームで運用する中で,リンクの使い方について感じたことを書く.
前置きとして,チームや個人毎の目的に沿った適切なリンクの使い方というのがあると思うので,これはその一例である.
それは,リンク運用を行う中で,ある用語もしくは概念,手順を解説するページに関連用語の説明を入れない,つまり関連用語をリンク化するのが良さそうということ.
これは Scrapboxer にとっては当たり前かもしれないが,Scrapbox に使い慣れていない人にとってはやりがちなバッドプラクティスではないかと思う.
例えば,「カレーの作り方」というページがあったときに,「じゃがいもとは」というセクションは不要だろう.
もしもページの中に組み込んでしまえば,「じゃがいも」を用いる他のページで情報が重複してしまって冗長になるか,省いた場合には「じゃがいも」を知らない人にとっては不親切である.
このときに,「じゃがいもを切る」という記述があれば,「じゃがいも」をリンク化し,その説明を別のページに切り出すことが有効だろう.
そうすれば,「じゃがいも」を知らない人が「カレーの作り方」もしくは「ポテトサラダの作り方」を参照したとしても,「じゃがいも」ページを参照すれば済むし,「じゃがいも」を知っている人にとっては,情報の密度が薄まることがなくカレーを作るための必要な情報だけを参照できる.
しかし,そのような運用をしたときに考慮しなければならないのは,同じ用語でも文脈によって意味が変わることである.
そのようなときは,「じゃがいも」ページには一般的な説明を記述して,特定の文脈の中で補足が必要な部分だけを文章として記述すればよい.
つまりページはなるべく疎結合にリンクさせ,独立して意味が完結することを目指す.リンクとして用いるページではその文脈に沿った補足情報を記述するのが良い.
Scrapbox は機能がミニマムだからこそ,(複数人で使う場合は特に)運用ルールが肝心になる.
使えば使うほど,細かいこういうふうに運用すればもっといい感じになるのでは?というのが湧き出てきて,どんどんハマってしまう不思議なツールである.
Linux の PATH について.一度プログラミングを始めた頃に学んだが,そこからなんとなくの理解でこれまでやってきた.今日バイナリファイルをダウンロードして,そのコマンドのパスを通すという作業をしたので,改めて整理しておこうと思う.
そもそも「パスを通す」などで用いられる"パス"は,"コマンドサーチパス"の略称である.
Linux では通常,コマンドを実行するには $ /usr/bin/passwd
のように,フルパスを指定する必要がある.しかしそれは面倒である.
そこで,Linus のシェルは,フルパスを指定しなくても,設定されたディレクトリにコマンドの実行ファイルを探しにいくようになっている.このとき「シェルがコマンドのバイナリファイルを探しに行くディレクトリを設定する」ことを「パスを通す」という.言い換えれば,コマンドサーチパスを設定するという意味になる.
コマンドサーチパスは,PATH
という環境変数に格納されている.$ echo $PATH
を実行すれば,設定されているパスを確認できる.PATH
には,通したいパスを「:」区切りで指定する.
以下のような出力であれば,/usr/local/bin
, /usr/bin
, /bin
にパスが通っていることが分かる.
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
追加したいときは,$ export PATH=$PATH:/usr/sample
のように,現在の $PATH
に「:」で繋げて通したいパスを指定すれば良い.また,同名のファイルが複数のディレクトリにあった場合,PATH
に定義されたディレクトリのうち先頭から優先してファイルを実行するので注意が必要.また,セキュリティの観点からも余計なディレクトリを追加せず(パスを通さず),安全なディレクトリに絞って指定することが重要である.
洗濯物をコインランドリーに持っていった.近くにいい感じのコインランドリーを見つけて利用している.両替機もあって便利.
コインランドリーで洗濯をすると2回空白ができる.洗濯機を回して31分,その洗濯物を乾燥機に入れて40分.
洗濯機を回している時間に近くを散歩した.夕方に差し掛かる時間で日陰でも辛い暑さだったが,引っ越してきて間もないのでまだ歩いたことがない場所が多く,散歩は苦じゃなかった.
平日の商店街はお昼時をすぎれば閉じてしまう店も多い.近くは住宅街が広がっていて,道が入り組んでいる.家の表層から表出する多様な生活が観られて楽しい.
まだ行っていない方の大通りにも出てみた.良さそうな花屋を見つけて入ってみたが,手持ちが少なかったので何も買わずに出た.またすぐにでも行ってみる.小さくて落ち着きのある雰囲気の喫茶店も見つけた.
コインランドリーに戻って,洗濯物を乾燥機へ移す.スーパーへ買い物に行く.
最近,17時くらいにお腹が減るので,そのときに食べるちょうどいい間食を検討する.友人に相談した結果,ナッツ,ゆでたまご,フルーツ,プロテインあたりが暫定候補.なるべく手を汚さずに食べられて,洗い物は少なく,食べるための手間がかからないようにしたい.あと保存が利くものがいい.
とりあえず,間食用にバナナ,たまごを買った.そしてなぜか納豆がピンときた.いままで食べようと思って食べたことがない.幼稚園児くらいのときに一度食べて吐いてから,一口とか試してみたことがあったかもしれないが,食べた記憶がない.納豆を食べようと思いついことがなかったので,この機会を逃すまいとカゴにいれる.どれがいいかも分からないのでパッケージを見たことがあるやつを適当に選んだ.
家に帰って,納豆を机の上に出してみる.パッケージや容器を見てみたが食べ方が書かれていない.「タレ」の袋に何やら書いているのを読むが,袋の開け方を丁寧に説明しているだけだった.
とりあえず,糸に注意しながらフィルムを脇によけて,タレをかける.たしかヒトが食べるときに混ぜたりしていたので,混ぜてみる.粘つきが出てくる.どれくらい混ぜればよいかもわからないので,頃合いをみてなんとなく食べる.おいしくはなかった.匂いに関しては,思っていたよりも抵抗はなかった.豆の風味は感じる.ただ,おいしさがわからなかった.付属のからしをつけると少し食べやすくなった.
納豆は量的にもちょうどよいし,食べるための手間もそんなにない.それに健康に良いとどこかから聞いたこともあるので,おいしいと思えれば,間食としてはだいぶあり.納豆は,調整可能な工程があり,もしかしたらもっとおいしい食べ方があるかもしれない.なにより,食べられることが分かったので,おいしさが分かるようにトライしてみたい.とりあえずここ数日食べてみて,他の候補と比べてみようと思う.
6年前に留学をした.そのときに仲良くしていた人たちとの飲み会に行った.お酒が弱いなりによく飲んでしまった.もともとそういう場に行く機会は少ないが,周りの友人も就職して忙しくなったし,パンデミックのニューノーマルを経てより出不精になっていた.二日酔いとまではいかないが,よく眠りにつけなかったので一日体調は優れなかった.
ここ数年,渋谷に行くと店にたどり着くまでに,元気がなくなってしまう.電車を降りて改札を出ると飛び込んでくる多量な情報に一瞬ハイになるが,2分も歩いていればゲンナリしてくる.足取りがみるみる重くなる.5年ほど前は毎日渋谷にいるような生活をしていたので,感覚があまりに変わってしまったのだと再認識する.特に最近は家の徒歩10分圏内で生活しているのもあるだろう.パーソナルスペースを守ることができない密度に慣れていない.
結局コロナの都合で,7人集まるはずが4人になった.あまりにも当たり前になりすぎた理由.しようがないことである.ここまで続くと「落ち着いたら」が意味するところは変わってきた.他の人たちと会えないのは残念だった.
1年ぶりのメンバーもいれば,4年ぶりのメンバーもいた.山から降りてきたの?と言われ,なんのことか3時間後に気づくくらいに,年数が経っていたことに驚いた.そういえば4年前は山奥に住んでいた.
”尖っていた”とも言われた.そうか,尖っていたのか.あのときはいまよりずっと若く,自分でも何を考えていたのかよく分からない.割と自己と他己は違って映るもので,いまから振り返ればどちらかというと病んでいただけだと思う.そういうことを考えると,会えなかった人,言わなかった言葉に注意を向けると心情に近いものが捉えられると思う.
内一人の友人は,ちょうどメガベンチャーを退職して起業するらしい.友人からそのような話は今までも聞いていたので,うれしかった.偶然にもぼくも最近事業準備に取り組んでいて,タイミングが近かった.まあそういうものなんだろう.友人との付き合いのなかで彼がそう選択することに驚きはなかったが,自分についてはあまりそういうことを想定していなかったので,やはり自分のことなんて他人のほうがよく分かるものなのかもしれない.
お店はコース料理もおいしかったし,気持ちのいいテラス席で久しぶりにスパークリングワインも飲んで気分がよかった.
2軒目は一人のメンバーから,彼氏が別の場所で5人で飲んでるので,合流しようという提案があった.久しく新しい交友関係,そこまでいかずとも接触というものがなかったので,怯んだ.というか,最近はそういう機会を意識的に避けていた.それに8人以上の飲みの場は経験的にきつい.大体はその場を茶化して,よく知っているすぐ近くのお店へ行くのがベターだった.
結局,不可抗力的に合流することになった.3人以上いた時のその場のノリには勝てない.
三軒茶屋へ向かうタクシーの中,変わらず笑って会話していたが,明らかに緊張が高まっていた.
しかし,行って正解だった.
店に入って十数分は,人見知ってしまったが,30分後には久しぶりに腹筋がつるほどに笑っていた.裏笑いではあったが,ぎこちない状況の中で,あるひとの表情や行動が重なった面白さがあり,笑うのがきつくて必死に仕事のことを考えたほどである.まさに緊張の緩和であった.優しく安心感を纏った即反射的な一種の身体的コミュニケーションのパターンが,学生時代にいたどこまでも優しい先輩とのノリで,ノスタルジーを伴う面白さがあった.
すごく良い人達で,初対面の人が複数いる中でもうまく楽しめて盛り上げられる力量はすごい.三軒茶屋の奥深さを垣間見ることができた.正直名前はだれも覚えていない.ああいう場では名前よりも優先されることが多いだろう.
3軒目のダーツバーでもひとしきり楽しんで,元々のメンバーと共に途中で抜けたが,もう少しお礼をきちんと言えばよかった.悪い飲み方はしていないが,お酒の場は楽しいし細部は覚えていないうえ,気分の揺り戻しか,次の日に反省することが多い.
ある程度ベターな選択を想定できてしまうようになったがゆえに,不確実性の高い選択をしないようになっていたことを改めて認識した.
帰路が同じ方向の友人とタクシーで帰った.車中は,かつてルームシェアをしていた当時のように技術や態度の話ができてたのしかった.
途中下車して30分ほど歩いて帰ったが,適度に歩くのは酔い醒ましに良い.迷ったらより分からない方の道に行ってみるのもたまにはいい.
インターネットにより醸成された文化を過ごすことで,他人の言葉を読み聞きする機会は圧倒的に増えている.
そんな中で,ときどき思うこと.
他者が発した言葉を,自己の認識する意味のみで理解するのと,相手に成り代わったつもりで理解してみるのとでは,全く変わった意味になる.
後者の態度で解釈しようとすると,その発言の意図やある程度くるめられた細部の概念が分かることがある.
文脈を踏まえつつ,相手の経験やバックグラウンドを根拠に,相手がどのような認識で発しているかという観点から言葉を解釈することを,日常的に行えている人は少ないと思う.
いわゆる環世界を意識すること.「前提」をずらすと「言葉」の意味は揺らぐ.
詩的な言葉とは,そういった言葉の多義性を直感させる力がある.
それは発話者の像もいらないし,言葉に対する無意識な前提がずれて,いつも目にしている言葉が急に広がりを持つ驚きが在る.
今日,たまたまこの動画を観た.短い動画であるが,観終わったあとは「んーなるほど」と動画の尺以上に考え込んでしまった.
クレジットはLink Yearという団体.調べてみると,米国のスクールを運営する基督教系の団体のようで,高校卒業後の若者を対象としたプログラムを提供しているらしい.
この動画を観て思うことは,人によって割と違うんじゃないかと思う.これは社会で生きていくことの比喩表現だ.イデオロギーをぶつけ合う前に合意を確認すべき前提を示している.社会の実態のようなものを捉えることは困難だし,身の回りの集団や自身の環境 / ポジションに対する自己評価の違いによって,感じることやそこから導き出すことは大きく引っ張られるんじゃないか.
この動画の主題は「スタートラインの差」,つまり特権についてであろう.それを見せつけられたときに何を思うか,それも他人事ではなく,さっきまで笑い合っていた友人が横にはいない.教師がルールを読み上げるシーンは徹底して残酷である.経済,教育,家庭などに関した環境の格差による有利不利を見せつける.実社会では,目には見えないが確かに「スタートライン」はある.それは,美辞麗句に覆われて,昔より見えにくくなったかもしれない.この教育プログラムで示すものは,単に「公平」という言葉を飾っているだけの学校では教わらない内容だろう.
動画全体の演出は苦手だが,終盤の俯瞰のカットはいい.差を目の当たりにして,何を思ったって号令がかかれば始まるレースにどういった態度で望むか.スタートラインの差は結果の言い訳にだってできる.スタートした後の,それぞれの走る姿勢や態度は示唆に富む.動画には映っていなかったが,スタートラインで立ち止まる生徒がいたかもしれないし,自身の立ち位置に有利な方向に走っていった人もいたかもしれない.総じて,どのスタートラインからでも全力で走る人は尊敬する.
ただそれだけ.
内容は特に決めていない.
日々のメモみたいなものか,仕事関連で書きたいものなのか,技術関連のことか,そのあたり.
ブログを作るなら個人のページで運用したかったので,とりあえず Github Pages で始めれば,個人サイトをホスティングする際も移管がしやすいかと考えた.
Github で運用すれば,慣れているし気軽に書けそう.
そんな中,gialogで簡単に日記を作るやつをやった という記事を見て,すぐに始められるしいいなということで早速書いてみている.
お昼にいつも行く中華屋さんに向かうと,閉まっていた.少し遅めのお盆休みに入ったようだ.特にお店も決めずに,駅の方へ向かった.ふとビルの2階にサイゼリヤの看板を見つけて,食べたくなったので入ることにした.久しぶりだった.とりあえず,マルゲリータは頼むことにして,もう一品に Zuppa なるものを頼んだ.数種類の野菜といんげん豆を煮込んだスープのようなもので,ミニフィセルと一緒に食べたがすごくおいしかった.これを食べにまた来たいと思った.
お昼時だったので店員も忙しなくしていて,注文用紙を書いたり調味料を頼んだりあらゆるものがセルフサービスになっていた.つい最近行ったスシローでも,店員との接触があまりにも少ないことに驚いたが,サイゼリヤも似たような変化を感じた.チェーン店は(デジタル/アナログ関わらず)システムを導入することで,効率化して人手を減らす流れが進んでいるのだろう.いつも行く近所の蕎麦屋や中華屋,喫茶店での其とないコミュニケーションや受けるサービスの貴重さが際立って感じられるようになった.
Visual Studio Code で開発を行うと,バックグラウンド分析により警告を表示してくれる.
大体は気になりつつも,その場しのぎで対応してしまっているので,今日は Solidity 開発において初歩的な内容について,いくつか事例を挙げ対応策をまとめた.
SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
SPDX license identifiers を指定していないから
Solidity はv0.6.8からSPDX license identifiersを取り入れた
SPDX license identifiersを明示する(↓は [UNLICENSED] の場合)
+ // SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.15;
Source file requires different compiler version (current compiler is 0.8.13+commit.abaa5c0e.Emscripten.clang) - note that nightly builds are considered to be strictly less than the released version
Visual Studio Code の workspace compiler のバージョンが,指定したものよりも低いから
workspace compiler をコードで指定したものに揃える
ref. How to Change the Solidity Compiler in VS Code - Dapp Dev Tips - Medium
Source "XXX.sol" not found: File import callback not supported
node_modules/
配下のライブラリを呼んでいないため
デフォルトのパッケージパスにnode_modules/
を指定
settings.json
に↓の記述を追加
+ "solidity.packageDefaultDependenciesContractsDirectory": "",
+ "solidity.packageDefaultDependenciesDirectory": "node_modules",
午後に大きめな予定が入っていると,午前中がうまくワークしない.あとの予定に気が散ってしまう.時間は限られていて見積もりやすいのだから,うまくこなしたい.あらかじめやることを決めておくという当たり前の対策が必要そうだ.
...
友人が物件を引き払うのに付き合った.都内を運転するのは久しぶりだった.環7と山手通りの,位置と他地域との接続関係が少し理解できた.
残っていた荷物を処理するために,友人は不用品回収業者を呼んでいた.現場に居合わすことが出来なかったが,後から聞くと想定よりも多くのお金を支払ったらしい.中サイズのダンボール八個強の荷物(軽トラ半分の面積くらい)で,電話で依頼したときは 14,800円〜 と言われていたものが,なんと10万円強を請求されたみたいだ.完全にぼったくりである.
退去立ち会いの時間が迫っていて(20分間くらい)余裕がない状況の足元を見られてしまったよう.電話するときに,そのような状況を伝えていたことも,相手に隙きを見せてしまったのかもしれないと嘆いていた.
ああ,すぐそこに闇はあって,いつ巻き込まれるのかわからないのだなと虚しくなった.当たり前だが,人は必ずしも善意で動いているわけではない.その上,当然のように明らかな悪意を持って働きかけてくる人も多くいる.公私ともに周りの人に恵まれていると忘れてしまいがちだが,こうして時たま思い知らされる.
ネットで調べてみると事例多々.不用品回収業界はわりとぼったくりのトラップが蔓延しているようだ.サービスを比較するにもレビューが機能しておらず,口コミサイトも完全に怪しい.不用品回収でぼったくりが発生してしまう理由としては,以下のようなものがあるらしい.
こういう業者がのうのうとできること自体が,社会の小さなバグだろう.自治体の回収サービスが,便利で安全なので基本的にはそちらを利用するようにしよう.いずれにせよ,悪質な業者と関わらないためには,1週間前には準備をしておくことが肝要.余裕の無さは隙きをつくる.
先日,夜に1時間超歩いて帰宅した.それが最高によかったので,毎日夜に近所を数十分歩こうかと思う.
散歩は好きだ.予定がある場所に行ったとき,近くに行ったことのない場所があれば,早めに行ってとりあえず歩くことにしている.新居を決めるときも,大体エリアを決めておいて数日間歩いてみて絞っていく.
しかし,最近は歩く機会が減った.普段の移動の際になるべく歩くことは変わらないが,この時間は散歩しようということをあまりしなくなった.散歩は特に,歩くことだけではなく目的地がないことが重要である.移動として歩くなら,最短の道を選ぶことが重要だが,散歩では道の奥性や通ったことがないか,通りたいという直感があるか,によって道を選ぶことが重要である.
散歩は,とにかく気分が良くなる.特に目的はなく散歩する.考えごとをするのにもいい.血流がよく流れ,情報処理としても外部刺激が丁度いいのだろう.散歩するときは,その街に住んでいるつもりで歩いてみるのが楽しい.歩きながらそこでの生活を想像してみる.あるいは,家々を見ながらそこでの生活を想像してみる.自分好みの住宅を見つけたときは楽しい.近所であれば,発見が楽しい.
しかし,家の近所の場合は,環境になれてくると飽きがくる.公園や施設,お店,建物を知り尽くしてしまい,どこも通ったことのある道になってしまうし,現在地と家までの距離がわかってしまうので,遠くなってしまう道を面倒で選ばなくなって,つまらなくなってくる.これが散歩に億劫になってしまった大きな要因だ.
だが,家で仕事をするのが続き,外に出ない習慣を断ち切りたくなってきたので,夜に散歩することを続けてみようと思う.最低10分歩くことだけ決めて,あとは気の向くままに歩いてみよう.
Aptos の WP を読んでいた。
Ethereumのドキュメントでの知識が理解の助けになった。Moveは結局のところ書いてみないと分からない。
チェーンのWPは、bitcoin,ethereum,solanaあたりを読んでおけば、割とつかみやすそう。
Aptosにおける,アカウント作成時の暗号化手順
シーケンス番号は,そのアカウントから送信されたトランザクション数を示す.トランザクションにはシーケンス番号を含み,トランザクションを処理する際に,トランザクションに含まれるシーケンス番号とアカウントが保持するシーケンス番号を比較し,一致する場合のみ実行に移す.これはリプレイ攻撃を防ぐためのもので,Ethereum だと nonce にあたる.
アカウントアドレスは,アカウントの識別子として重要なリソースであるが,アカウント生成時に導出される32バイトの認証鍵がそのままアカウントアドレスになる(例: eeff357ea5c1a4e7bc11b2b17ff2dc2dcca69750bfef1e1ebcaccf8c8018175b
).
秘密鍵と公開鍵は後から更新でき,その場合は認証鍵も変更される.しかし,アカウントアドレスは永続的(不変)であり,認証鍵とアカウントアドレスが一致するのは,初期のみで必ずしも一致しない.つまり,既存のアカウントアドレスが変更されることはない.
Aptos の署名方式には2つある.
それぞれの署名方式は以下の署名スキームを用いる
Ed25519
MultiEd25519
また,アカウントの認証鍵を生成するには,そのアカウントについて1バイトの署名方式の識別子の指定が必要で,それぞれ以下のように識別子が定められている.
0x00
0x01
それぞれの署名方式によるアカウントの生成手順は以下である.
単一署名方式
auth_key = sha3-256(publicke | 0x00)
マルチシグ方式
K
の値を決定K
から,32バイトの認証鍵を同種
auth_key = sha3-256(p_1 | ... | p_n | K | 0x01)
ここ3日間,仲良くしていた高校の同級生が東京に遊びに来ていて,外に出かける機会が重なった.深夜にかけてお酒を3日連続飲む機会なんてめっきりなかったので,身体にはきちんと響いている.
箇条書きで記録しておく.
初の「リアル脱出ゲーム」を体験した
夜の新宿,サラダボウルだ,毎回おもってしまう
二丁目は,新たな境地だった
所沢の角川武蔵野ミュージアムで,現代における街のモニュメントとは何かを考えた
東久留米のスパジャポ,行くなら平日の昼
渋谷,鴨と葱,牛タン,日本酒が最高のお店があった
西東京で暮らすなら Loop は登録しておいたほうが便利
渋谷から1時間超歩いて帰宅した
Aptos と Move の開発環境構築をしていた.Aptos は,Meta(旧Facebook)社でブロックチェーンプロジェクトを行っていた元 Diem(旧Libra)メンバーによって立ち上げられたプロジェクトで,Diem プロジェクトの一環で開発されたプログラミング言語が,Moveである.今年1月にMeta社が Diem 事業から手を引いたのち,元メンバーたちが複数のプロジェクトを立ち上げ,Move エコシステムとしてクリプト業界に新たなムーブを作っている.Aptos の他に Sui や 0L Netowork などのプロジェクトがあり,いずれもオープンソースで開発されていて Discord でコミュニティに参加することができる.
そんな Move はググラビリティが悪い.新興言語なのでそもそも情報が出回っていないことも大きな要因だが,move という単語で見当外れの情報がヒットしまくる.作業をしている中で検索しても分からないことがあったので,とりあえずAptos の Discord に投げてみた.2件ともすぐに返事を返してくれた.周りに開発者仲間がいないので,オープンな開発やコミュニティはすごく助かるし,そういった運営方針がクリプトのプロジェクトの場合はスタンダードで,そこが素晴らしいと思う.
Aptos は SDK を提供している.クライアントが,公開API に接続して Aptosブロックチェーンとインタラクションを行うための開発者向けのインターフェイスである.
提供している主な機能としては以下である.
異なる言語に対応しており,Typescript SDK と Python SDK の2つを提供している.おそらく Typescript SDK がメイン.
Typescript SDK は3つのレイヤーで構成されている
トランスポート層は,Aptosの公開APIの仕様に基づいた class のセットを提供していて,APIのエンドポイントにペイロードを送信する役割.
コアSDK層は,殆どのアプリケーションで必要とされるような機能を提供していて,上述の主な機能のほとんどを提供する役割.
アプリケーション層が提供する機能は限定的で(おそらく今後はサードパティが担っていくと思う),NFTトークンの作成とクエリのためのメソッドを提供している.
インストール手順はそれぞれ以下
$ npm install aptos
$ pip3 install aptos-sdk
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.