アドレスから公開鍵を取得する方法について

Takanobu ()
例えば、Aliceというマルチシグアカウントがあり、Bobがそこから10xemを送金したいとします。
BobはAliceの署名者(Cosigner)ですが、公開鍵を知らない限り送金は行えません。(と思っています)

ところが、LightWalletではAliceのアドレスを入力するだけで、送金できてしまうのです。
不思議だなーと思っていると、 API:/account/get でAliceのアドレスを指定すると普通に公開鍵が取得できました。

ここで質問です。

・一般的な暗号理論だとハッシュ化されたアドレス値から公開鍵(publicKey)の取得は困難かと思いますが、NEM、mijinの場合はアドレス値から公開鍵の取得は容易、と考えてよいでしょうか?
・今後mijinのセキュリティ設定が可能になると思いますが、設定によりアドレスから公開鍵の取得を禁止することは可能でしょうか?

よろしくお願いします。

flops ()
NEM、mijinのようにアドレスから公開鍵が取得できる仕掛けがある方が利便性が高いと思います。
アドレスから公開鍵を知る方法がない場合、マルチシグアドレスからの送金トランザクションを
作成するために、公開鍵の情報をどこかへ保持していなければならないと思います。

公開鍵はその名の通り公開されても問題ないものなので、取得を禁止するものでもないと思います。
bitcoinの場合、マルチシグアドレスから送信するときのトランザクションには
公開鍵が含まれていますので、ブロックチェーンから公開鍵が取得できると思います。

Takanobu ()
flopsさん、アドバイスありがとうございます。

私の調べた限りでは、nem.coreには公開鍵からアドレスを取得する方法が無いのです。
ですので、NEM APIはnem.coreを拡張させた仕様なんだろうなー、とは思っていました。

確かにアドレスから公開鍵が取得できる方が便利ですよね。

flops ()
nem.coreがブロックを管理しているとすると、情報としては公開鍵の
情報を持っていると思います。

nembexでも各アドレスの公開鍵がみれますよね。
単純にブロックに格納されているトランザクションから公開鍵を
拾ってきてデータベース化しているだけなんだと思います。

送金実績がないアドレスは関連するトランザクションがブロックに
格納されていないので公開鍵は取れないと思います。
公開鍵からアドレスへの計算はできますが、逆はできないので。

Takanobu ()
ありがとうございます!
flopsさんのおかげでnemの理解が深まりました。

公開鍵という文字列とアドレスを別々に管理しているわけではなく、
ブロック情報全体をシリアライズしてデータベース化しているようですね。

Accountあたりのmodelクラスばかり眺めていて全体を見渡せていませんでした。
またよろしくお願いします。