ジオマーリン

仕様を公開してアドバイスを受けながら geomerlin.com を構築していくスタイル。このシステムではデータサイエンスと人工知能技術により地政学リスクを算出しています。

経済・政治ニュースのソートはそろそろ「価格への影響」をベースにされるべき

今日はgeomerlin.comのニュースソートの方針転換の話です

f:id:geomerlin-com:20170512150223j:plain

geomerlin.comは地政学リスクを中心としたリスク評価が中心のニュースサイトです。

 

この「地政学リスク評価」を現在GPRを用いて表示しています。 

geomerlin-com.hatenablog.com

GPR Indexは原油価格と強い相関関係を持っており、グローバル市場のリスクとしては申し分ない指標です。

 

ついこの間ですが北朝鮮のミサイル発射予告により、米国のハイテク株が売り相場に転じました。

www.mag2.com

ハイテク株が中心に地政学リスクの影響を受けた・・・おそらく売ろうと考えていた人たちからするとピストルの合図のようなものです。

 

考えなければならないのは、一番リスクを知っているのは誰でしょう?

多くの人がソーシャルメディアやニュースのコメント欄でリスクを論じます。しかし、多くの人たちは日常から行動を変えないのです。

変える人たちが一部にいます。もっとも顕著なのがトレーダーの方たちです。

このニュースをもとにハイテク株まで影響すると考え、大きな額を動かすのですから。

 

彼らはロイターの高額高級エディションで、無料でのニュース配信よりはるかに詳しく速く正確な情報を得ています。彼らが作る集合知である「市場」はもっともリスクを知っていると言えるでしょう。

 

故に我々は、市場価格に影響するかどうかを、もっとも支配的な基準としてニュースのソートと推薦を行うことにします。

つまり、ニュースがクリックされやすいか・話題にされやすいかは二の次の基準と考え、リスクの概念を市場を通して再構築したいと考えています。その際、GPRはより重要なニューラルネットへの入力の一つとなるでしょう。

 

これで多くのニュース検索エンジン・キュレーションサイトより、geomerlin.comのコミュニティをグローバル投資に役に立つようにできると考えています。

グローバル投資への僕たちの考えはこちらです。

 

geomerlin-com.hatenablog.com

 

 

仮想通貨のアービトラージ(裁定取引)コードを公開します

Krakenでドル→仮想通貨→ユーロの変換が為替レートと大きく違う(多い時で7%ほど)ことがあったのでこの差分を抜き取るコードを書きました。実験済みです。

 

結果なんですが、

上げ相場のときのみ儲かりました。1回commit_plan関数を実行すると300円くらい儲かりました。

下げ相場の時は仮想通貨ホールド中に暴落するため損失をだしてしまいました。あとやはり実行中に相場が動いてしまいますね。

ぼくのコンセプトに間違いがあった可能性等ふくめ、改良案を募るためにコードを公開します。

 

コードの概要は、まず取引値でシミュレートし、変換候補(USD→ETH→EURなど)に目星をつけた後、板の厚さも込でシミュレートし、実行します。

USD→ETH→EUR→BTC→USDのような循環をおこない増やしていくイメージです。

エディタで見てくださいね。ソッチのほうが見やすいですから。

 

個人的にはKrakenの出来高が少ないのがかなり不利だと感じたので、Krakenが盛り上がったらもう一度試してみようと考えています。

 


import krakenex
import fx
iimport time 
import urllib.request
import urllib.parse
import json
from pprint import pprint

##Kraken パブリックapiのキー
apikey = 
apisec = 
##Kraken シークレットAPIのキーです
zako = 
zako2 = 

CANDIDATE = {"EUR":["XBT","REP","ETH","LTC","XLM","XRP","DASH","ETC","XMR","ZEC"],"JPY":["XBT","ETH","XRP"],"GBP":["XBT","ETH"],"CAD":["XBT","ETH","XRP"],"USD":["XBT","REP","ETH","LTC","XLM","XRP","DASH","ETC","XMR","ZEC"]}

#ALTS = ["DASH/XBT","ETC/XBT","ETH/XBT","GNO/XBT","ICN/XBT","LTC/XBT","MLN/XBT","REP/XBT","XDG/XBT","XLM/XBT","XMR/XBT","XRP/XBT","ZEC/XBT",]

k = krakenex.API(apikey, apisec)
k2 = krakenex.API(zako, zako2)

#####通貨コードの雑用的操作です######
def initialX(d):
    if len(d)<4:
        return "X"+d
    else:
        return d

def lastZ(d):
    if len(d)<4:
        return "Z"
    else:
        return ""

###APIでオーダーを出す関数です
def order(pair,buy_or_sell,v,price):
    v = str(v)
    price = str(price)
    if price=="MARKET":
        res = k2.query_private("AddOrder",{"pair":pair,"ordertype":"market","type":buy_or_sell,"volume":v})
    else:
        res = k2.query_private("AddOrder",{"pair":pair,"ordertype":"limit","type":buy_or_sell,"volume":v,"price":price})

    return res.get("result"),pair

###オーダーがまだあることを確認しています
def check_order_done():
    for i in range(5):
        try:
            orders = k2.query_private("OpenOrders")
            return  orders["result"]["open"]
        except:
            pass
            
###売り板・買い板のデータを取得します
def check_depth(pair):
    for i in range(5):
        try:
            h = k2.query_public("Depth",{"pair":pair})
            return h["result"]
        except:
            pass

###オーダーキャンセルします
def cancel_order(txid):
    k2.query_private("CancelOrder",{"txid":txid})

def cancel_all():
    for key in check_order_done():
        cancel_order(key)

###今の資産状況を取得します
def check_balance():
    
    for i in range(5):
        try:
            orders = k2.query_private("Balance").get("result")
        except:
            orders = False
        if orders:
            return orders

def check_history():
    orders = k2.query_private("TradesHistory")["result"]
    return orders

def check_asset():
    orders = k2.query_private("Ledgers",{"ofs":"1"})["result"]
    return orders

def check_position():

    positions = k2.query_private("OpenPositions")["result"] 
    return positions


### vフィアットのボリューム)と買い板データを入れるといくらコインをもらえるか返します
def sum_orders_market(v,lst):

    sum_m = 0
    sum_p = 0
    for i in lst:
        i0 = float(i[0])#price
        i1 = float(i[1])#amount
        p = i0*i1
        if v<sum_p+p:
            res = sum_m + (v-sum_p)/i0
            print(res)
            return res
        else:
            sum_m += i1
            sum_p += p

### vの通貨が一体いくらのフィアットになるか計算します
def sum_sell_market(v,lst):

    sum_m = 0
    sum_p = 0
    for i in lst:
        i0 = float(i[0])#price
        i1 = float(i[1])#amount
        p = i0*i1
        if v<sum_m+i1:
            res = sum_p + (v-sum_m)*i0
            print(res)
            return res
        else:
            sum_m += i1
            sum_p += p
            

### どの変換ルートが利益になるか判別します
###(元の法廷通貨、変換先の法廷通貨、いくら動かすか、最低何%儲かって欲しいか)が引数です
def chose(currency,currency0,DOLLAR,limitrate):

    
    first = currency0[0]
    common_coin = list(set(CANDIDATE[currency])&set(CANDIDATE[currency0]))
    print(common_coin)
    sell_list = [i+currency for i in common_coin]
    buy_list=[i+currency0 for i in common_coin]
    pairs = ",".join(sell_list+buy_list)
    print("通信中")
    ticks = k.query_public('Ticker',{'pair':pairs})['result']
    print("終了")

    go_score = []#USD to EUR
    ###fxのレートを取得します
    fx_rate = float(return_rate(currency+currency0))
   
    print(fx_rate)
    candidate = CANDIDATE[currency]
    for i in common_coin:
        pair1 = initialX(i)+lastZ(i)+currency0
        pair2 = initialX(i)+lastZ(i)+currency

        step1 = float(ticks[pair1]["a"][0])
        dic1 = ticks[pair1]["a"]

        step1c = float(ticks[pair1]["c"][0])
        step1d = float(ticks[pair1]["b"][0])
        step1d = (step1*4+step1d*6)/10
        if step1d<step1c:
            step1c = step1d

        step2 = float(ticks[pair2]["b"][0])
        dic2 = ticks[pair2]["b"]

        step2c = float(ticks[pair2]["c"][0])
        step2d = float(ticks[pair2]["a"][0])
        step2d = (step2*4+step2d*6)/10
        if step2d>step2c:
            step2c = step2d

        ###ここの部分は重要です
        ###フィアットに売り抜けないといけないので売りは成り行きを想定します 
        go_score.append((i+":なりゆき なりゆき",step2/step1,step1,step2,pair1,pair2,2))
        go_score.append((i+":指値 なりゆき",step2/step1c,step1,step2,pair1,pair2,4))

    #スコアをソートします
    go_score.sort(key=lambda x:-float(x[1]))
    
    print("ランキング")
    for i in go_score[:30]:
        print(currency0+"→ "+i[0]+"→ "+currency+": 利益"+str((i[1]*fx_rate-1)*100)+"%"+"   "+str(i[2])+"   "+str(i[3]))
    
    
    ###ここからが本番です
    ###板の厚さを無視したシュミレーション結果であるgo_scoreを板の厚さ込でシュミレーションします
    ###Krakenは板がすごく薄いので300ドルか300ユーロの入力を想定します
    all_dic = {}
    for i in go_score[:5]:

        if not all_dic.get(i[4]):
            dic1 = check_depth(i[4])[i[4]]["asks"]
            all_dic[i[4]] = dic1
        else:
            dic1 = all_dic[i[4]]
            
        if not all_dic.get(i[5]):
            dic2 = check_depth(i[5])[i[5]]["bids"]
            all_dic[i[5]] = dic2
        else:
            dic2 = all_dic[i[5]]
        
        if i[-1]==2:
            first = sum_orders_market(DOLLAR,dic1)
            second = sum_sell_market(first,dic2)
            if not (first and second):
                continue

            rate = 100*(second*fx_rate-DOLLAR)/DOLLAR
            print(currency0+"→ "+i[0]+"→ "+currency+": 利益"+str(rate)+"%"+"   "+str(i[2])+"   "+str(i[3]))
            if rate>limitrate:
                return {"pair":i[4],"buy_or_sell":"buy","v":DOLLAR/i[2],"price":"MARKET"},{"pair":i[5],"buy_or_sell":"sell","v":False,"price":"MARKET"} 

        elif i[-1]==3:
            first = sum_orders_market(DOLLAR,dic1)
            if not first:
                continue
            rate = 100*(first*i[3]*fx_rate-DOLLAR)/DOLLAR
            print(currency0+"→ "+i[0]+"→ "+currency+": 利益"+str(rate)+"%"+"   "+str(i[2])+"   "+str(i[3]))
            if rate>limitrate:
                return {"pair":i[4],"buy_or_sell":"buy","v":DOLLAR/i[2],"price":"MARKET"},{"pair":i[5],"buy_or_sell":"sell","v":False,"price":i[3]} 
            
        elif i[-1]==4:
            
            second = sum_sell_market(DOLLAR/i[2],dic2)
            if not second:
                continue
            rate = 100*(second*fx_rate-DOLLAR)/DOLLAR
            print(currency0+"→ "+i[0]+"→ "+currency+": 利益"+str(rate)+"%"+"   "+str(i[2])+"   "+str(i[3]))
            if rate>limitrate:
                return {"pair":i[4],"buy_or_sell":"buy","v":DOLLAR,"price":i[2]},{"pair":i[5],"buy_or_sell":"sell","v":False,"price":"MARKET"} 

    print("まだダメです")
    return False,False

###シュミレーションを利用して、実際に取引を行うコードです
###法廷通貨→ 仮想通貨 → もうひとつの法廷通貨 の変換を行います
def commit_plan(cur0,cur1,rate,amount="All"):
    timeout1=10;timeout2=100
    if amount=="All":
        amount = float(check_balance()["Z"+cur0])
    print([cur0,cur1,rate,amount])
    print("====発射====")
    timeout = 0
    quest1,quest2 = chose(cur1,cur0,amount,rate)
    if quest1==False:
        return False
     
    while True:
        o1 = order(**quest1)
        
        if o1[0]:
            o1id = o1[0].get("txid")
            print(o1)
            print("is ordered")
            break
        print(o1)
        time.sleep(0.5)

    flag = True        
    while flag:
        if timeout>timeout1:
            cancel_order(o1id)
            print("キャンセルしました"+o1[1])
            return "DONE"

        res= check_order_done()
        if res !={}:
            flag=True
            time.sleep(1)
            timeout +=1

        else:
            flag=False
        
    b = check_balance()
    b = b[o1[1][:4]]  
    print("途中経過") 
    print(b)

    quest2["v"]=b
    timeout =0
    while True:
        o2 = order(**quest2)
        if o2[0]:
            o2id = o2[0].get("txid")
            break
        time.sleep(0.5)
        print(o2)

    flag = True
    while flag:
        res= check_order_done()
        if res !={}:
            flag=True
            time.sleep(1)
            timeout += 1
        else:
            flag=False

    b = check_balance()
    b = b[o2[1][-4:]]  
    print("結果") 
    print(b)

    return "DONE"


###最高位の関数です。資産状況をみながらcommit_planを実行します
def operation():

    balance = check_balance()
    eur = float(balance["ZEUR"])
    usd = float(balance["ZUSD"])

    result = False
    if eur>usd:
        if eur>270 :
            result = commit_plan("EUR","USD",3,270)
        elif usd>300:
            result = commit_plan("USD","EUR",3,300)
    elif usd>eur:
        if usd>300:
            result = commit_plan("USD","EUR",3,300)
        elif eur>270:
            result = commit_plan("EUR","USD",3,270)

    return result


def return_rate(pair="EURUSD"):
    url = "https://query.yahooapis.com/v1/public/yql"
    params = {
        "q": 'select * from yahoo.finance.xchange where pair in ("{0}")'.format(pair),
        "format": "json",
        "env": "store://datatables.org/alltableswithkeys"
    }
    url += "?" + urllib.parse.urlencode(params)
    res = urllib.request.urlopen(url)

    # 結果はJSON形式で受け取ることができます
    result = json.loads(res.read().decode('utf-8'))
    #pprint(result)
    rate = result["query"]["results"]["rate"]["Rate"]
    return rate



if __name__=="__main__":
    while True:
   
        res = False 
        try:
            res = operation()
        except Exception as exp:
            print(exp)
            
        if res == "DONE":
            print("オペレーションが完了しました")

IEx.ec RLC の現状と将来

今日はマイナーコインの紹介です。

 

IEx.ec RLCというコインがBittrexだけに上場しています。

このプロジェクトは

クラウドコンピューティングのサービスをブロックチェーンで行うことでコストを下げること

を目指しています。簡単にいえば、中小企業が集まってAWS作ってしまおう」ということです。

 

クラウドプラットフォームの複雑さを知っている人も知らない人も「難しそうなことしそうだけど出来るの?それ」と考えるかもしれません。

 

背景

提案者のHaiwu He教授はついこの間、最も創造的な中国人100人に選ばれました。

 

もともとクラウドコンピューティングの分野では著名な方で、

Haiwu He : Main / Haiwu He, Ph.D : browse

フランスのINRIA(フランス国立情報学自動制御研究所 - Wikipedia)の協力のもと、このIEX.exプロジェクトを立ち上げたそうです。

そのせいか、フランスの外務省も協賛に入るようになり、フランスの国家のプライドがかかったプロジェクトになっています。

 

事業内容について

さて、このプロジェクトの具体的な未来図はなにかと言えば、Amazon Web ServerやMicrosoft Azureのようなサービスをもっと低コストで実現することだと言えます。

実はこのクラウドコンピューティングはここ最近で巨大化している市場であり、

f:id:geomerlin-com:20170814091338j:plain

amazon資料出展)

AWSだけでもこれほどのサービスがあるのです。

簡単に言えば「自社にコンピューターなくてもAWSに来ればなんでもできる」みたいな状況なので、Amazon社の売上の6割を占めるまでになっています。SE・PGで無い方からすると、かなり意外かもしれないですね。しかし、これなしではAmazonは赤字なのです。

 

IEx.ex提供のこの図を見て下さい。よく知らない中小企業が集まっていると思うのですが、おそらくコレが狙いです。

中小企業が集まってAWS作ってしまおう」ということです。

f:id:geomerlin-com:20170814092655j:plain

(iexec rlc whitepaper 出展 http://iex.ec/wp-content/uploads/2017/04/iExec-WPv2.0-English.pdf

ブロックチェーンは「知らないコンピューター同士が約束する」ことができるので、利益分配も正確にできますし、新規参入による協業もブロックチェーンに入るだけです。やりたいことはかなり明確で、ポエムICOとは一線を画すと考えられます。割と厳しめの評価を下すこのシリーズでもRLCは好意的でした。

iEx.ec — Ethereum-based distributed cloud – Crypto Judgement – Medium

 

時価総額について

さて、肝心の時価総額ですが、8月14日付で約60億円です。これを大きいととるか、小さいととるかは分かりませんが、比較対象として

 

クラウドサービスが現時点で市場規模10兆円があり、伸び続けていること

japan.techrepublic.com

 

②ライバルのGolemの時価総額が現時点で300億円あること

 

を多くの投資家が指標にしています。

 

RLCへの投資の性質について

他と違った性質がいくつかあります。

①投資家の心理よりも事業の進展の影響が大きい

 これは”今のところ”という注釈がつきますが、先ほどの説明通り、中小企業が集まってBtoBのためのシステムを構築するブロックチェーンなので、個人投資家にとって馴染みがないトークンです。ゲームに使うGamecreditやエロサイトに使うDecentみたいな接点がないので自然と知名度も低いです。これはAWSが巨大な事業なのに、普通のAmazonサービスより全然知名度が低いのと同じ理由ですが。

つまり「みんなが集まって値段が上がる!」みたいな仮想通貨のテンプレではなく、今のところ「どの大企業と契約がとれて、それがどの大手投資企業に評価されるか」のほうが値動きに関わっていると思われます。

7月にIexecはEthereum Enterprize Aliance(イーサリアム企業連合)のメンバー入りをしました。

これは、多くの企業と協業することにとって決定的な効果があると考えられます。

 

②広告をあまりしない

 これはSlackでも怒り狂っているひとがいたのですが(笑)、大企業との協業がベースの事業戦略である以上、個人に対する広告・メディア露出でコインの値段を釣り上げるメリットが今のところあまりないことに理由があります。IEX.ex使うのにRLCコインが必要ですが、その値段が高かったら企業側も協業しにくいので、おそらく彼らはコインの値段は適性価格であって欲しいと思っていることでしょう。長い目でみての利益がチームの狙いで、バブルに乗ることではなさそうです。

 あと、これは個人的な勘ですが、プライドの高いチームなので、プロダクトが出ていない状況でコインの値段がやたら上がったり、過大広告をしたり、メディアに持ち上げられるのを嫌いそうな印象です。11月にプロダクトリリースですから、その後にチームがマーケッティングに力を入れることを期待しています。

 

次はUbiqかAuger・Gnosisあたりの調査を公開しようかな。

 

ブロックチェーンでグローバル投資はすべての人間の日常になる

知っての通り、暗号通貨(仮想通貨)市場が大きくなっています。

 

今日伝えたいことは、

まず、はじめに暗号通貨はグローバル投資だと言うことです。なぜなら国内投資ではないから。

そして、今まで英語ペラペラの40歳にも難しかったグローバル投資は、これからは高校生も参加してTwitterで自慢するようになるということです。

 

現に今、多くの高校生や大学生が仮想通貨に入ってきています。有名な暗号通貨女子も今夏のリア充期間のちょっと前までは、学校のテストが終わった後に、アメリカ発のリップルや中国のAntsharesのチャートを見ていたりしたわけです。

 

グローバル投資家のジム・ロジャーズの本を読んだ方は、その壮大な世界観に引きこまれたことだろうと思います

www.amazon.co.jp

 

車とバイクで世界一周をし、世界中の国々を投資判断する。作中で、中国の急成長と日韓の停滞を規制・保護主義という観点から予想していました。

経済に対して規制と保護主義は摩擦として働き、停滞させる。もし海外投資ともなると、規制だらけであり、それが多くの人を遠ざけている理由です。

 

具体的には、たとえばデンマーク風力発電の会社に投資したい場合を考えましょう。

日本の松井証券などに申し込む

松井証券デンマークの証券会社のシステムに発注

デンマークの証券会社が取引する

この間に何回手数料を抜かれていることでしょう。また、これほど法律で定められた証券を得るのに、何回身分証明が必要でしょうか。

 

ではスコットランドのStorj社に投資するためにはどうしたらいいでしょうか?

①StorjトークンのクラウドセールにEthereumを送る(以上)

あるいは

②メアドだけでBittrexのアカウントをつくり、btc送金→Storjトークンを得る(以上)

トークンとは暗号通貨のことです。目的が限定されている時こう呼ばれることが多いです。

 

異常なほど簡単です。英語でドキュメント出している会社なら、株式よりもトークンを出そうと言う動きになることは明白ですね。

 

昔NewsPicksでこんな記事とコメント欄がありました。

newspicks.com

ここについていたコメント。

「で、どうやってタンザニアに投資するの?」

 

僕はこれはすごく象徴的だと思いました。日本人ほど世界中の地理や歴史を勉強する国も珍しいようで、アメリカ人がグローバル投資に手を出せるのなら、日本人にも明らかにどこに投資すればいいか分かっているひとは結構いると思うのです。

投資しない理由は、今まで規制だらけで、全てが面倒だったから。

 

さてここで、タンザニアの観光企業がトークンを出したり、タンザニアのIndexにベッグ(連動)したトークンが現れたらどうでしょう?

 

ブロックチェーンプロトコルが世界のネットを覆うことは、本格的なグローバル投資の加速の幕開けを意味します。

僕たちの開発チームでは、どうにかしてこの流れで成功する人間を多数輩出できるコミュニティを作ろうと全力で活動しています。

 

情報をお求めなら、

geomerlin.com

までどうぞ。

 

 

Liskの現状と将来 Dappは作りやすいか?

f:id:geomerlin-com:20170812191834j:plain

Liskはスマートコントラクトが実行できるブロックチェーンです。 実際手を動かして調べたことをまとめます。

 

geomerlin-com.hatenablog.com

 


前の記事でEthereum上のコーディングを検討していると言いましたが、簡単に言えば自然言語処理コードをブロックチェーンで動かすアイディアの実装方法で迷っているという話です。

Ethereumをプラットフォームとして調べると言うことは、Liskも調べるということになります。

ほぼ、同じ方向を向いているプロジェクトだからです。

 

結論から言えば、

①EthereumとLiskは今のところ比較にならないくらいの差があります。

2014年から始まったEthereumと2016年に始めた時期が全然違うので当然ですが、Ethreumのスマートコントラクトはもう動いていますし、送金も頻繁ですが、LiskはスマートコントラクトのAPIをまだリリースしてすらいない上に、送金がないブロックばかりです。

②Liskの価格は1年以内にどんどん上がります

なぜなら、スマートコントラクトのAPIリリース(ver 1.0.0)が直近(〜秋)である上に来年5月にまた半減期が入るからです。

 

ではEthereumとの比較ですが、 

共通点は

①スマートコントラクト(Dapp=分散アプリケーション)

②独自通貨の実装

③Power of Stakes

です。

 

よく言われる相違点は

①Liskはサイドチェーンだからセキュリティ上Ethereumよりよろしい、さらに手数料を自分で設定できる。

②Liskのブロック生成は10秒に1回なので取引が速い

③LiskはJavascriptで書かれているから、既存プログラマーに優しい

みたいなところです。

 

ではLiskの現状を整理しますが、

①Liskはまだブロックチェーンのマイニング・送金の安定を目指している段階

Lisk Development Roadmap – Lisk Blog

これを見れば分かりますが、この数段階のうちの最初の段階です。

Ethereumが苦労した第二フェーズはLiskで言うところの第3段階ですから、これから苦労するのかと。

ちなみに今はliskのブロックチェーンブラウザ見ると分かりますが、取引0のブロック多いので、スケーラビリティの問題に直面するのは、まだまだ先になりそう 

スマートコントラクト付きのフェーズにはver1.0.0のリリースで突入し、それはQ3かQ4のはじめつまり秋ごろになりそうとか。つまり秋に1回価格上昇が期待できます。

 

②ドキュメント不足!!

Liskの中で一番よいDappのチュートリアルがこれ

Lisk - DApp in 10 minutes [OUTDATED] - Lisk Forum

内容は期限切れになって久しいと思われますが、これよりマトモなチュートリアルを見つけるのが非常に難しく、アプリケーションを簡単に作れる状況にないことは明らか。

そりゃそうですね、スマートコントラクトがまだAPI実装されてないので、作るならサイドチェーンを自分で改造しないといけないわけですから、そこまでしてLisk選ぶのは少数。

 

そして、Ethereumはその通貨Ethと独自トークンの関係がすっきり分かりましたが、Liskはサイドチェーン上のLiskの扱いに不明な点(githubのREADME読んでも分からない点)が多いです。

Lisk · GitHub

 

そして公式ドキュメントの404(リンク切れ)の多さ。

正直これには少し疲れてしまった。

べつにスマートコントラクトなんてなくても、チェーンとP2Pさえあれば独自通貨もDappも作れるつもりだったので、自力でコーディングするつもりでしたが、Lisk側は今の状態で使ってもらう気はあまり無いようです。

 

③実用例は一応もうあるらしい

battlechain.com

 

Liskベースのゲーム用のプラットフォームらしいです。サイドチェーンをイジれさえすれば、手数料も自由に決められるので場合によってはEthereum上よりも良い物を作れるかもしれません。

GitHub - MaxKK/guestbookDapp: Lisk Guestbook

がLiskの公式サンプルDappなんですが、このgenesisblock.jsonがサイドチェーンの最初のブロックになります。ブロックに書き込むデータをコードのように色々設定すれば任意のデータを合意保存できます。サイドチェーンの情報はメインチェーン(Liskノード全体がつくるチェーン)にリンクのように記録されます。

次のバージョンリリースでは、おそらくこのサイドチェーン上の合意データの作り方が限定されるけど分かりやすくなり、メインチェーンとのやりとりも明確にAPIで行われるのだと思われます。(今はなんでもありなので)

繰り返しですが、現フェーズはメインチェーンの安定期間ですので、Dappのリリースは少なくて当然です。

 

Javascriptにした意味

これはおそらくサイドチェーンを低い学習コストでいじらせるためです。

ここが、Max氏の慧眼なんです。

Ethereumはかなり完成度の高いプラットフォームですが、新しい言語とバーチャルマシンで動くため、自由度の高いことは比較的しにくい。最近スケーラビリティの問題があった際も、「多くのプロジェクトが非効率なコードを書いているから」とVitalik氏が発言していました。

Liskではチェーンが別なので非効率なコードを書くDappプロジェクトがあろうが、メインチェーンにとっては割とどうでもいいですし、メインチェーンと問題を起こさない分、各プロジェクトは好き勝手にサイドチェーンをいじれるのです。

そのとき、あまり知らない言語で創造性を発揮しにくいですよね。好き勝手させるなら慣れている言語に限ります。

 

⑤3月から半減期相場

5月にマイニング(フォージング)報酬が4Liskから3Liskになります。Monacoinの露骨な半減期相場を覚えている方も多いと思いますが、Liskも同様です。だいたい2ヶ月ぐらい前から上昇が加速します。

moneygamexx.hatenadiary.com

個人的にはこれも上手いなと思います。毎年半減期を設定して話題を作るわけですから。

いずれにせよ秋の1.0.0リリース→春の半減期を考えると、かなり安定株な気がします。

Ethereumベースの”仮想通貨”はどのくらいEthereumと関係があるか?

最近予測市場をウェブサイトgeomerlin.com を考えているので、Ethreumのことをよく考えます。

Auger・GnosisがEth上の予測市場有名ですよね。

 

今回はEthereum上の通貨とEthの関係について勘違いがされやすい点を書きます。

一番言いたいのは仮想通貨・暗号通貨とトークンはいい加減分けて話すようにしたほうが良いという点です。

内部の仕様を知らなかった時のイメージは、「よくわからないけど、ブロックチェーンのシステムの中でEthereumと密接にやり取りがされるんだろうな」と思うのですが・・・

 

ICOクラウドセール)はSolidalityコードで40行くらいで書ける

よく、「Ethreumを握りしめてICOに行く」みたいな表現をされますが、Ethereum送ってトークンに変換するだけなので、プログラムとしてはICOはかなり簡単。

つまり、WhitePaper (平均word10ページ分くらい)を書いて、Solidityコードを何十行か書けば、ICOできます。

 

たぶん、ICOに批判的な人はこの仕組みを知っている人たちだと思います。

というのも、最初僕もICOを聞いた時「すげー、世界変わる世界変わる」って思ったのも、ICOがかなり簡単なただのクラウドファンディングだということを知らず、「スマートコントラクトによって、イーサリアムの送り主はもう出来上がったプロジェクト上で通貨を使って様々なアカウント機能を使える」と思っているからなんです。

 

実際、かなりのICOはまだプロジェクトを始めたばかりの段階で、システムもアカウント機能もないです。

あるのは

struct Zandaka {
    address addr;
    uint amount;
  }

 みたいな残高を記録するデータです。

 

トークンはEthereum通貨とあまり関係がなくてもOK

残高の移動をスマートコントラクトで行うだけなので、ICOで資金のEthereumを集めて、スマートコントラクトの実行時に手数料(Gas)のEthereumを払うだけでだいたいはOK。

 

つまりEthereumベースの通貨がEthereumの価格によってつられるのは、ICOで集めた資金の価値が上下するからであって、「Ethereum内部のバグによってスマートコントラクト系のシステムに不調が起きるから下がる」とかっていう事態は、よほどちゃんとしたプロジェクト(Auger)とかでない限りはなさそうだと思っていいです。

 

つまり

(1)スマートコントラクトにEthereum残高を移動するコードがあるか

(2)スマートコントラクトの実行数(手数料)

がEthereum通貨(Eth)とトークンの関連度に関わります

 

スマートコントラクトの実行数だけEthereumと関係が増えるのですが、Ethereumにとっては無駄にコントラクト作られるのは悪いコーディング。双方にとっても最小限の関わりのほうが、良いのかもしれません。

 

アカウント機能をどんどん拡張中@geomerlin.com

久しぶりの投稿です。

アカウント機能を拡張し、地球儀へのニュースの投稿、ニュースへのコメントの共有、トピックベースのチャットLINEを追加しました!!

 

geomerlin.comでは恒常的なコーディングにより、システムのアップグレードを週一のペースで進めております。

 

今季によく考えたことは、

今時のWebシステムの良し悪しは結局アカウントが何を出来るかに帰着するな

ということです。

 

昔のシステムからの変遷を考えるとそれは明らかです。

GoogleGmail追加→Google+追加

Twitter/Facebook→OAuthで様々なサービスにログイン

ニュースメディア→Newspicks/pocketのようなアカウント付きキュレーション

 

といったところ。

 

アカウント機能中心で考えると、「ユーザー=顧客に対して何をしてあげられるか」と言う視点に直結するので、システムが良くなりやすいのです。