Moveスマコン完全に理解した
Movespidersぽちぽち・・(EthereumでいうCryptozombies)
https://movespiders.com/
Aptosスマコン書けるようになってきたな
さてDefiで儲けてみるか^〜^
大きな敵と気付き
こ、このコントラクト、コードが公開されていない・・・
そういえば、今まで自分で書いたコントラクトを動かすだけで、他のコントラクトを動かすってことしてなかったな
アドレス定義すれば動くのでは・・? -> 失敗
// leverage_bot.move
module leverage_bot::loop_supply_borrow {
use lending::lending;
}
// Move.toml
[addresses]
lending = "0x0daaf1cca3f702b3d94425e4f0a7bfb921142666846a916f5be91edf1f1911d4"
aptos move publish --move-2
Invalid 'use'. Unbound module: '0xDAAF1CCA3F702B3D94425E4F0A7BFB921142666846A916F5BE91EDF1F1911D4::lending'
巷の他のスマコンを呼び出しているスマコンを探してみる
基本的にアドレス定義しているだけでほぼ同じように見える
しかしdependenciesで、githubのurlを指定している部分が差分としてあった。
これか?でも今回はコードが公開されていないので指定できないよね・・・?
ひたすらハマる・・・
サンプルがない
解決策
ABIをもとにした仮のモジュールを作って、ローカルで読み込むように設定すること
ABIから作った仮の関数を使うことで対応できる情報を入手
返すものは適当で型だけあっているモジュールを作る
しかし、しっかり本当のコントラクトのように、sourcesフォルダとMove.tomlを用意する
module lending::lending {
use 0x1::signer;
use 0x1::coin;
use 0x1::object;
use std::string;
use std::vector;
struct Market has key {
inner: string::String
}
public fun market_objects(): vector<object::Object<Market>> {
vector::empty<object::Object<Market>>()
}
}
利用するコントラクトの方で、アドレスを指定し、ローカルの読み込み設定も行う。
// contracts/Move.toml
[package]
name = "Leverage"
version = "0.0.0"
[addresses]
lending = "0x0daaf1cca3f702b3d94425e4f0a7bfb921142666846a916f5be91edf1f1911d4"
[dependencies]
Lending = { local = "./lending" }
これで自分のスマコンから公開されていないスマコンを呼び出すことができました
まとめ
Aptosでの公開されてないスマコンを動かすのサンプルや情報がほぼなかったのでまとめてみました。