Pagpatuman sa hurisdiksiyonal nga agility ngadto sa blockchain nga BEOS

in #blocktrades5 years ago

Ang kini nga artikulo kay mabasa usab sa pinulongang Ingles/English ug Tagalog.

__
Pasiuna: Sa miagi naghimo og pasiuna nga post nga minghulagway sa kung unsa ang hurisdiksiyonal nga agility (ang abilidad alang sa mga tiggamit sa blockchain nga makapili sa asa nga hurisdiksiyon nga ang ilahang transaksyon kay mahitabo sulod sa heograpikal nga distributed network) nga mga gimbuhaton ngadto sa BEOS nga blockchain. Kini kay sunod nga post nga mohulagway sa kung usa kini nga gimbuhatonon nga gipatuman sa BEOS ug sa labaw nga gituyo alang sa mga teknikal nga tigbasa (mga arkitekto ug tigprogram sa blockchain).

Pagdumala sa mga hurisdiksiyon sa mga tigmugna og block sa BEOS

Ang mga tigmugna og block sa BEOS kay mamahimo nga makamantala sa mga rehiyon (usa o labaw pa nga mga hurisdiksiyon) kung diin sila nahimutang, ug mamahimo nga makatimo og usa o labaw pa nga mga rehiyon sa hurisdiksiyon diin ang ilahang transaksyon kay prosesohon.

Ang hurisdiksyon sa BEOS kay naila pinaagi sa talagsaon nga id nga kodigo (uint16), usa ka talagsaon nga ngalan (usa ka gamay nga string nga mas ubos pa sa 256 ka mga karakter), ug usa ka deskripsyon (usa ka syring nga mas ubos pa sa 256 ka mga karakter). Ang mga hurisdiksiyon kay gitigom isip datos sa estado sa blockchain sa duha ka C++ nga mga multi-index: jurisdiction_dictionary_object ug jurisdiction_producer_object.

Ang BEOS kay adunay naka-default nga listahan sa mga hurisdiksiyon alang sa mga nasud base sa ISO 3166 country codes og gidungagan sa European Union (code 10000) ug International Waters (code 10001). Dugang pa nga mga hurisdiksiyon kay mamahimo pinaagi sa pag-burn og 1000 ka BEOS (ibayad ngadto sa eosio.null)

Ang software sa blockchain alang sa hurisdiksiyonal nga agility kay wala nakahibaw og bisan unsa nga butang kabahin sa lohikal nga mga asosasyon tali sa mga hurisdiksiyon. Pananglitan, ang blockchain kay wala kahibaw nga ang Warsaw kay nahimutang sa Poland. Maong ang usa ka tigmugna og block (BP) kay kinahanglan nga momantala og managlahi nga anaa sa Watsaw, Poland ug ang sa European Union aron nga mamahimo nga maproseso ang mga transaksyon nga nakadestino alang sa tanan niining tulo ka mga hurisdiksiyon.

A BP can change its jurisdictions in two ways: 1) directly calling the updateprod action on the eosio.system contract with its set of jurisdiction codes or 2) by calling the update_jurisdictions action defined in the optional gps plugin. This latter method allows a mobile BP (e.g. a block producer on a ship) to use a gps receiver to get its current coordinates then call update_jurisdictions to convert those geo coordinates into one or more jurisdictions which contain those coordinates.

Kung ang usa ka BP kay magmantinir og mga BO node sa daghan nga mga hurisdiksiyon (pananglitan usa ka node sa US ug usa ka node ngadto sa Tsina), kinahanglan nga momantala lang sila ngadto sa (mga) hurisdiksiyon nga momugna sa ilahang umaabot nga block. Nagdungag kini og posibilidad nga matagna sa mga tiggamitan kabahin sa kung unsa ang mga hurisdiksiyon nga magamit sa umaabot nga serye sa mga block ug naghimo niini nga posible nga matino nga unsang hurisdiksiyon ang gigamit sa bisan unsa nga block gibase ngadto lang gyud sa kasaysayan sa hurisdiksiyon nga gimantala sa mga tigmugna og block.

Mga aksyon sa pagdumala sa mga hurisdiksiyon sa kontrata sa eosio.system

Ang anaa sa ubos nga mga aksyon sa eosio.system kay giila sa mga tigmugna og block aron nga makadugang og bag-o nga mga hurisdiksiyon ug makatino sa ilahang mga hurisdiksiyon.

void addjurisdict( account_name ram_payer, code_jurisdiction new_code, std::string new_name, std::string new_description )
void updateprod( eosio::jurisdiction_producer data )
  • addjurisdict - nagdungag og hurisdiksiyon ngadto sa dikisyonaryo sa hurisdiksiyon
  • updateprod - nag-update sa mga hurisdiksiyon alang sa gihatag nga tigmugna
struct jurisdiction_producer {
      account_name                        producer;
      std::vector< code_jurisdiction >    jurisdictions;
};

Ang kontratang eosio.system kay anaa usab mga espesyal nga mga aksyon nga mabuhat lang gyud sa tag-iya sa kontrata. Ang kini nga mga aksyon kay alang sa kompigurasyon (pananglitan, aron makompigura ang nauna nga gipangsuportahan nga mga hurisdiksiyon ug makatakda sa bayad alang sa gibuhat nga mga bag-ong hurisdiksiyon).

void addmultijurs(std::vector<new_jurisdic_info> new_jurisdicts)
void updatejurfee(asset quantity)
void updatejuracc(account_name target_account)

Pag-encode og kinahanglanon sa Hurisdiksiyon ngadto sa transaksyon sa BEOS

Ang klase nga transaction kay anaay datos sa miyembro nga extensions_type transaction_extensions.

diin ang extensions_type: std::vector<extension_storage>

Ang deskripsiyon sa extension_storage

  • uint16_t - type of data: always 0
  • std::vector - codes of jurisdictions
struct extension_storage
    {
        uint16_t type;
        std::vector<char> data;
    };

Kung ang extensions_type kay walay sulod, nagpakita kini nga ang gihatag mga transaksyon kay walay gikinahanglan nga bisan unsa nga hurisdiksiyon. Mao kini nga naka-default nga linihukan.

Plugin sa API sa Jurisdiction

Ang bag-ong Plugin sa API sa Hurisdiksiyon kay nagahatag sa mga tawag nga API nga kinahanglan aron masuportaan ang agility nga hurisdiksiyonal. Mopatuman kini sa mga musunod nga mga tawag:

get_active_jurisdictions

Ang kini nga pamaagi kay molista sa tanang magamit sa pagkakaron nga mga aktibong node sa tigmugna.

Mga Parametro:

{
  "limit" : 1000
}

limit default value is 1000.

Paggamit:

  • Kuhaa ang tanang aktibo nga mga hurisdiksiyon
curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction/get_active_jurisdictions -X POST -d '{}'
  • Kuhaa ang unang 100 nga aktibong mga hurisdiksiyon
curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction/get_active_jurisdictions -X POST -d '{"limit" : 100}'

Balik:

{
  "jurisdictions":[0]
}

get_producer_jurisdiction

Ang kini nga pamaagi kay molista sa tanang mga hurisdiksiyon alang sa gihatag nga tigmugna.

Paggamit:

curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction/get_producer_jurisdiction -X POST -d '{"producer_names":["eosio"]}'

Balik:

{
  "producer_jurisdictions":[
    {"producer":"eosio","jurisdictions":[0]}
  ]
}

get_all_jurisdictions

Ang kini nga pamaagi kay molista sa tanang hurisdiksiyon nga gitino ngadto sa sistema.

Mga Parametro:

{
  "limit" : 1000,
  "last_code" : 50
}

Ang limit ug last_code kay opsyonal. Ang naka-default nga kantidad salimit kay 1000. Ang last_code kay mosuporta sa pagpahina nga mga laraw, mamahimo ka nga motino og kodigo aron makasugod og pag-ila.

Pananglitan sa Paggamit sa mga tawag sa API:

  • I-lista ang tanang mga hurisdiksiyon hangtod ngadto sa utlanan sa pangutana (1000).
curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction/get_all_jurisdictions -X POST -d '{}'
  • I-lista ang tanang mga hurisdiksiyon ngadto sa utlanan sa pangutana nga gitakda ngadto sa 100.
curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction/get_all_jurisdictions -X POST -d '{"limit":100}'
  • I-lista ang tanang mga hurisdiksiyon ngadto sa utlanan nga gitakda sa 100 nga magsugod gikan sa kodigo 50.
curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction/get_all_jurisdictions -X POST -d '{"limit":100, "last_code" : 50}'

Balik:

{
  "jurisdictions":[
    {"code":50,"name":"poland","description":"EAST EUROPE"},
    {"code":51,"name":"germany","description":"EAST EUROPE"}
  ]
}

Bag-ong plugin sa API sa kasaysayan sa hurisdiksiyon

Ang kini nga opsyonal nga plugin kay gidungag aron masubay ang mga pagbag-o sa hurisdiksiyon nga gibuhat sa mga tigmugna og block. Dili kini kinahanglan alang sa usa ka node nga mogana lang isip tigmugna og block, pero kinahanglan nga paganahon kini alang sa node sa API.

Aron paganahon ang kasaysayan sa hurisdiksiyon alang sa mga tigmugna og block, kinahanglan ka nga modungag sa kuni nga linya ngadto sa imohang node sa BEOS nga config.ini:

enable-jurisdiction-history = true

Ang kasaysayan sa hurisdiksiyon sa API kay mingsuporta sa mga tawag sa API nga gihulagway sa ubos:

get_all_producer_jurisdiction_for_block

Mibalik sa impormasyon kabahin sa tanang mga hurisdiksiyon alang sa matag tigmugna alang sa usa nga gihatag nga block.

Arguments:

{
  "block_number" : 1000 
}

Ang argumentong block_number kay opsyonal. Pinaagi sa pagka-default, ang pagkakaron nga nag-unang block kay gigamit kung walay gitino nga numero sa block.

Balik:

{
    "producer_jurisdiction_for_block": [{
        "producer_name": "beos.proda",
        "block_with_last_change": 143,
        "date_changed": "2019-06-17T13:30:55.500",
        "new_jurisdictions": [1, 2, 3]
    }, {
        "producer_name": "beos.prodb",
        "block_with_last_change": 149,
        "date_changed": "2019-06-17T13:30:58.500",
        "new_jurisdictions": [11, 12, 13]
    }]
}

Pananglitan sa tawag nga Curl call:

curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction_history/get_all_producer_jurisdiction_for_block -X POST -d '{"block_number":2000}'

get_producer_jurisdiction_for_block

Mobalik sa impormasyon kabahin sa hurisdiksiyon sa gihatag nga tigmugna alang sa gihatag nga block.

Mga Argumento:

{
  "producer" : "eosio",
  "block_number" : 1000
}

Balik:

{
  "producer_jurisdiction_for_block" : [
    {
      "producer_name" : "eosio",
      "block_with_last_change" : 700,
      "date_changed" : "2019-06-07T09:00",
      "new_jurisdictions" : [1,2]
    }
  ]
}

Pananglitan sa tawag nga Curl:

curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction_history/get_producer_jurisdiction_for_block -X POST -d '{"producer":"eosio","block_number":1000}'

get_producer_jurisdiction_history

Ang kini nga pamaagi kay mobalik sa mga pagbag-o sa hurisdiksyiyom alang sa gihatag nga tigmugna sulod sa gihatag nga gidugayon sa panahon. Angfrom_date ug to_date kay opsyonal. Kung from_date kay wala gipatin-aw, gitakda kini ngadto sa sinugdanan sa epoch. Kung angto_date kay wala gipatin-aw, gitakda kini sa pagkakaron nga panahon.

Mga Argumento:

{
  "producer" : "eosio",
  "from_date" : "2019-06-07T09:00",
  "to_date" : "2019-06-07T10:00"
  "limit" : 1000
}

Ang blangko sa limit kay opsyonal, gitakda nga naka-default ngadto sa 1000.

Balik:

{
  "producer_jurisdiction_history" : [
    {
      "producer_name" : "eosio",
      "block_number" : 700,
      "date_changed" : "2019-06-07T09:00",
      "new_jurisdictions" : [1,2]
    },
    {
      "producer_name" : "eosio",
      "block_number" : 1200,
      "date_changed" : "2019-06-07T09:01",
      "new_jurisdictions" : [3]
    },
  ]
}

Pananglitan sa tawag nga Curl:

  • Kuhaa ang tanang mga kabag-ohan sulod sa gihatag nga gidugayon sa panahon.
curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction_history/get_producer_jurisdiction_history -X POST -d '{"producer":"eosio","from_date":"2019-06-07T09:00","to_date":"2019-06-07T10:00"}'
  • Kuhaa ang unang 100 nga mga kabag-ohan sulod sa gihatag nga gidugayon sa panahon.
curl -H "CONTENT-TYPE:application/json" --url 127.0.0.1:8888/v1/jurisdiction_history/get_producer_jurisdiction_history -X POST -d '{"producer":"eosio","from_date":"2019-06-07T09:00","to_date":"2019-06-07T10:00", "limit":100}'

Mga modipikasyon sa CLEOS (wallet nga command-line) aron masuportahan ang agility nga huridiksiyon

Usa ka bag-ong swtich ang gidungag mgadtobsa command sa wallet cleos push action/transaction/transactions aron mahulagway sa diin nga hurisdiksiyon nga ang (mga) transaksyon kay kinahanglan nga buhaton:

  • -u,--jurisdictions TEXT - motakda sa matugot nga mga kodigo sa hurisdiksiyon alang sa transaksyon (kutob sa 255 ka mga matugot nga mga hurisdiksiyon ang matino), ang naka-default kay bisan unsa

Mga pananglitan nga naggamit og opsyonal nga switch sa mga hurisdiksiyon

Aron nga makatino og diin nga hurisdiksiyon nga ang transaksyon kay kinahanglan nga mabuhat, kinahanglan ka nga modungag og `-u,--jurisdiction nga switch. Sa ubos kay ang pipila ka mga pananglitan sa paggamit:

./cleos push action --jurisdictions '[0]' eosio.token transfer '[ "xxx", "yyy", "0.0001 BTS", "HI" ]' -p xxx

./cleos push action --u '[0]' eosio.token transfer '[ "xxx", "yyy", "0.0001 BTS", "HI" ]' -p xxx

./cleos push action --jurisdictions '[0,1,2,3,4]' eosio.token transfer '[ "xxx", "yyy", "0.0001 BTS", "HI" ]' -p xxx

./cleos push action --u '[0,1,2,3,4]' eosio.token transfer '[ "xxx", "yyy", "0.0001 BTS", "HI" ]' -p xxx

Sa mga pananglitan sa taas, ang daghan nga mga set sa mga hurisdiksiyon nga matugot kay gitino na:

  • [0] - ang kini nga transaksyon kay buhaton lang sa hurisdiksiyon nga 0,
  • [0,1,2,3,4] - ang kini nga transaksyon kay buhaton lang sa usa sa mga musunod nga mga hurisdiksiyon0,1,2,3,4`.

Mga bag-ong sub-command nga get

Aron nga makakuha og impormasyon kabahin sa mga hurisdiksiyon gikan sacleos, daghan nga mga bag-ong sub-command nga get kay gidungag:

  • all_jurisdictions - Mobawi sa tanang mga hurisdiksiyon gikan sa blockchain,
  • active_jurisdictions - Mobawi sa mga aktibo nga mga hurisdiksiyon gikan sa blockchain,
  • producer_jurisdiction - Mobawi sa mga hurisdiksiyon alang sa gihatag nga tigmugna gikan sa blockchain,
  • all_producer_jurisdiction_for_block - Mobawi sa tanang mga hurisdiksiyon alang sa tanang tigmugna sa gihatag nga block gikan sa blockchain,
  • producer_jurisdiction_for_block - Mobawi sa mga hurisdiksiyon alang sa tigmugna sa gihatag nga block gikan sa blockchain,
  • producer_jurisdiction_history - Mobawi sa kasaysayan sa mga hurisdiksiyon alang sa tigmugna gikan sa blockchain.

** Ang command all_jurisdictions**

Ang kini nga command kay mobawi sa tanang mga hurisdiksiyon gikan sa blockchain, pananglitan:

./cleos get all_jurisdictions

mobalik:

{
  "jurisdictions":[
    {"code":0,"name":"poland","description":"EAST EUROPE"},
    {"code":1,"name":"germany","description":"EAST EUROPE"}
  ]
}

Ang command ngaactive_jurisdictions

Ang kini nga command kay mobawi sa aktibo nga mga hurisdiksiyon gikan sa blockchain, pananglitan:

./cleos get active_jurisdictions

mobalik:

{
  "jurisdictions":[0]
}

Ang Command nga producer_jurisdiction

Ang kini nga command kay mobawi sa mga hurisdiksiyon alang sa gihatag nga tigmugna gikan sa blockchain, pananglitan:

./cleos get producer_jurisdiction '["eosio"]'

mobalik:

{
  "producer_jurisdictions":[
    {"producer":"eosio","jurisdictions":[0]}
  ]
}

Ang command nga all_producer_jurisdiction_for_block

Ang kini nga command kay mobawi sa tanang hurisdiksiyon alang sa tanang tigmugna alang sa gihatag nga block gikan sa blockchain, pananglitan:

./cleos get all_producer_jurisdiction_for_block "1000"

mobalik:

{
    "producer_jurisdiction_for_block": [{
        "producer_name": "beos.proda",
        "block_with_last_change": 143,
        "date_changed": "2019-06-17T13:30:55.500",
        "new_jurisdictions": [1, 2, 3]
    }, {
        "producer_name": "beos.prodb",
        "block_with_last_change": 149,
        "date_changed": "2019-06-17T13:30:58.500",
        "new_jurisdictions": [11, 12, 13]
    }]
}

Ang command nga producer_jurisdiction_for_block

Ang kini nga command kay mobawi sa mga hurisdiksiyon alang sa tigmugna sa gihatag nga block gikan sa blockchain, pananglitan:

./cleos get producer_jurisdiction_for_block "eosio" 1000

mobalik:

{
  "producer_jurisdiction_history" : [
    {
      "producer_name" : "eosio",
      "block_number" : 700,
      "date_changed" : "2019-06-07T09:00",
      "new_jurisdictions" : [1,2]
    },
    {
      "producer_name" : "eosio",
      "block_number" : 1200,
      "date_changed" : "2019-06-07T09:01",
      "new_jurisdictions" : [3]
    },
  ]
}

Ang command nga producer_jurisdiction_history

Ang kini nga command kay mobawi sa kasaysayan sa hurisdiksiyon alang sa tigmugna gikan sa blockchain, pananglitan:

./cleos get producer_jurisdiction_history "eosio" "2019-06-07T09:00" "2019-06-07T10:00"

mobalik:

{
  "producer_jurisdiction_history" : [
    {
      "producer_name" : "eosio",
      "block_number" : 700,
      "date_changed" : "2019-06-07T09:00",
      "new_jurisdictions" : [1,2]
    },
    {
      "producer_name" : "eosio",
      "block_number" : 1200,
      "date_changed" : "2019-06-07T09:01",
      "new_jurisdictions" : [3]
    },
  ]
}

Gilusad na karon sa BEOS nga blockchain

Ang tanan sa taas nga mga gimbuhaton kay gilusad na og pag-ayo ngadto sa pinakabag-o nga bersyon sa BEOS nga blockchain. Sa pagdungan, mopagana sila sa duha ka nagpondo ug naglihok nga mga tigmugna og block aron nga momantala sa pagkakaron nga mga hurisdiksiyon diin sila ming-lihok ug alang sa mga tiggamit sa blockchain aron nga mokuha ug mopili sa tanang magamit nga mga hurisdiksiyon aron nga matino sa kung asa nila gusto nga mahitabo ang ilahang mga transaksyon..

Ang pinakabag-o nga kodigo sa blockchain kay nahimutang sa:
https://github.com/terradacs/beos-core/tree/beos-jurisdiction-dev


All photos/contents from this post are obtained from @blocktrades-help / @blocktrades (also BlockTrades website) and is used with permission for translation purposes only.

Sort:  

Post Payout

Posted using Partiko iOS

Very interesting times!

Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.00% upvote! Together, let’s change the world!

Post Payout

Posted using Partiko iOS