{% extends "admin/change_list.html" %} {% block extrahead %} {{ block.super }} {# TODO: this is temporary hax, to get 'star' button working #} {# should eventually be moved somewhere more appropraite #} {% endblock extrahead %}


subject
CATALOG UGV2FKC77KT
-handwriting-notebook-nine-lines-per-page-120-pag-8-book.pdf
January 15, 2017
Filetype: PDF
|
1007 views
system_update_alt
Download
subject
Read
-earth-rotation-and-coordinate-reference-frames-e-book.pdf
December 05, 2016
Filetype: PDF
|
1643 views
system_update_alt
Download
subject
Read
-spatial-modelling-of-economic-activity-and-unemp-book.pdf
November 25, 2016
Filetype: PDF
|
2050 views
system_update_alt
Download
subject
Read
-lectures-on-natural-and-experimental-philosophy--3-book.pdf
July 24, 2016
Filetype: PDF
|
2575 views
system_update_alt
Download
subject
Read
-the-best-of-belwin-jazz-horn-in-f-first-year-cha-book.pdf
November 01, 2016
Filetype: PDF
|
1392 views
system_update_alt
Download
subject
Read
-dreams-to-reality-author-your-dreams-action-plan-2-book.pdf
September 14, 2016
Filetype: PDF
|
1135 views
system_update_alt
Download
subject
Read
-phoenix-animal-movie-comic-look-vol-2-purcell-ro-book.pdf
September 26, 2016
Filetype: PDF
|
3299 views
system_update_alt
Download
subject
Read
-the-art-of-easing-conflict-paperback-book.pdf
July 24, 2016
Filetype: PDF
|
3305 views
system_update_alt
Download
subject
Read
-physics-and-chemistry-of-clouds-book.pdf
July 30, 2016
Filetype: PDF
|
882 views
system_update_alt
Download
subject
Read
-a-treatise-on-international-law-volume-2-with-an-book.pdf
December 15, 2016
Filetype: PDF
|
1757 views
system_update_alt
Download
subject
Read
-mastering-public-speaking-the-handbook-with-mysp-book.pdf
September 16, 2016
Filetype: PDF
|
2324 views
system_update_alt
Download
subject
Read
-the-home-of-the-blizzard-a-heroic-tale-of-antarc-book.pdf
November 13, 2016
Filetype: PDF
|
2693 views
system_update_alt
Download
subject
Read
-the-white-boat-rescue-sugar-creek-gang-original--book.pdf
August 09, 2016
Filetype: PDF
|
2072 views
system_update_alt
Download
subject
Read
-christian-nurture-series-teacher-x27-s-manual-vo-1-book.pdf
September 13, 2016
Filetype: PDF
|
1304 views
system_update_alt
Download
subject
Read
-the-feast-a-7-week-easter-study-for-families-pap-book.pdf
December 02, 2016
Filetype: PDF
|
1044 views
system_update_alt
Download
subject
Read
-progressive-steps-to-syncopation-for-the-modern--1-book.pdf
August 25, 2016
Filetype: PDF
|
2590 views
system_update_alt
Download
subject
Read
-quilting-patches-of-life-book.pdf
December 23, 2016
Filetype: PDF
|
1282 views
system_update_alt
Download
subject
Read
-introduction-to-power-electronics-paperback-book.pdf
August 11, 2016
Filetype: PDF
|
2023 views
system_update_alt
Download
subject
Read
-7-biblical-spells-when-there-is-hatred-animosity-book.pdf
August 12, 2016
Filetype: PDF
|
1030 views
system_update_alt
Download
subject
Read
-science-economic-discussion-classic-reprint-pape-book.pdf
November 24, 2016
Filetype: PDF
|
884 views
system_update_alt
Download
subject
Read
-a-kid-for-two-farthings-bloomsbury-group-book.pdf
October 11, 2016
Filetype: PDF
|
1047 views
system_update_alt
Download
subject
Read
-fifth-grade-grade-teacher-to-teach-you-writing-book.pdf
December 14, 2016
Filetype: PDF
|
1654 views
system_update_alt
Download
subject
Read
-finding-fran-book.pdf
January 10, 2017
Filetype: PDF
|
2845 views
system_update_alt
Download
subject
Read
-negotiation-techniques-that-really-work-book.pdf
September 20, 2016
Filetype: PDF
|
2717 views
system_update_alt
Download
subject
Read
-the-steel-spring-inspector-jensen-book.pdf
November 15, 2016
Filetype: PDF
|
1026 views
system_update_alt
Download
subject
Read
-selections-from-the-qur-an-classic-reprint-paper-book.pdf
January 02, 2017
Filetype: PDF
|
3196 views
system_update_alt
Download
subject
Read
-grab-the-bull-by-the-horns-escaped-death-to-face-book.pdf
September 05, 2016
Filetype: PDF
|
435 views
system_update_alt
Download
subject
Read
-the-turn-of-the-century-1800-european-prints-amp-book.pdf
September 20, 2016
Filetype: PDF
|
933 views
system_update_alt
Download
subject
Read
-jesus-the-christ-in-the-light-of-spiritual-scien-book.pdf
November 12, 2016
Filetype: PDF
|
1986 views
system_update_alt
Download
subject
Read
-fifth-grade-students-read-and-efficient-language-book.pdf
October 02, 2016
Filetype: PDF
|
2209 views
system_update_alt
Download
subject
Read
-destined-to-reign-the-secret-to-effortless-succe-book.pdf
August 12, 2016
Filetype: PDF
|
1934 views
system_update_alt
Download
subject
Read
-the-visual-learners-guide-to-managing-web-projec-book.pdf
October 05, 2016
Filetype: PDF
|
3096 views
system_update_alt
Download
subject
Read
-expressions-of-politeness-and-gratitude-towards--book.pdf
October 05, 2016
Filetype: PDF
|
2308 views
system_update_alt
Download
subject
Read
-studyguide-for-neeb-s-fundamentals-of-mental-hea-book.pdf
November 16, 2016
Filetype: PDF
|
574 views
system_update_alt
Download
subject
Read
-the-best-gluten-free-wheat-free-amp-dairy-free-r-book.pdf
July 26, 2016
Filetype: PDF
|
2214 views
system_update_alt
Download
subject
Read
-the-braille-review-vol-13-january-1915-classic-r-book.pdf
January 16, 2017
Filetype: PDF
|
1441 views
system_update_alt
Download
subject
Read
-long-trail-home-book.pdf
November 21, 2016
Filetype: PDF
|
3048 views
system_update_alt
Download
subject
Read
-projections-of-education-statistics-to-2013-thir-book.pdf
November 30, 2016
Filetype: PDF
|
745 views
system_update_alt
Download
subject
Read
-algebra-2-hojas-maestras-de-evaluacion-en-espano-book.pdf
October 04, 2016
Filetype: PDF
|
790 views
system_update_alt
Download
subject
Read
-jonathan-jameson-in-the-crossroad-chronicles-pap-book.pdf
January 08, 2017
Filetype: PDF
|
2203 views
system_update_alt
Download
subject
Read
-resolution-paperback-book.pdf
October 30, 2016
Filetype: PDF
|
2672 views
system_update_alt
Download
subject
Read
-scattered-my-year-as-an-accidental-caregiver-pap-book.pdf
December 17, 2016
Filetype: PDF
|
752 views
system_update_alt
Download
subject
Read
-love-me-tender-baby-afghans-leisure-arts-3323-book.pdf
September 14, 2016
Filetype: PDF
|
2426 views
system_update_alt
Download
subject
Read
-attack-on-titan-17-17-book.pdf
November 22, 2016
Filetype: PDF
|
2196 views
system_update_alt
Download
subject
Read
-the-march-to-the-sea-franklin-and-nashville-clas-book.pdf
August 15, 2016
Filetype: PDF
|
700 views
system_update_alt
Download
subject
Read
-objective-pet-for-schools-practice-test-practice-book.pdf
August 08, 2016
Filetype: PDF
|
1767 views
system_update_alt
Download
subject
Read
-easiest-keyboard-collection-best-of-elton-john-l-book.pdf
January 08, 2017
Filetype: PDF
|
617 views
system_update_alt
Download
subject
Read
-seventh-grade-pep-winter-holiday-joy-to-write-si-book.pdf
August 02, 2016
Filetype: PDF
|
1439 views
system_update_alt
Download
subject
Read
-notecracker-banjo-chords-banjo-x2f-instrumental--book.pdf
August 02, 2016
Filetype: PDF
|
637 views
system_update_alt
Download
subject
Read
-shoreline-drive-book.pdf
August 09, 2016
Filetype: PDF
|
2091 views
system_update_alt
Download
subject
Read
-honoring-the-dead-catholics-and-cremation-today-book.pdf
July 24, 2016
Filetype: PDF
|
1203 views
system_update_alt
Download
subject
Read
-the-5-a-meal-college-vegetarian-cookbook-good-ch-book.pdf
September 30, 2016
Filetype: PDF
|
1712 views
system_update_alt
Download
subject
Read
-beadwork-art-and-the-body-book.pdf
November 17, 2016
Filetype: PDF
|
1043 views
system_update_alt
Download
subject
Read
-essentials-egg-essentials-series-book.pdf
October 20, 2016
Filetype: PDF
|
1962 views
system_update_alt
Download
subject
Read
-mining-and-metallurgy-volume-165-paperback-book.pdf
August 30, 2016
Filetype: PDF
|
2443 views
system_update_alt
Download
subject
Read
-hooked-on-the-word-changing-your-life-through-bi-book.pdf
January 08, 2017
Filetype: PDF
|
3271 views
system_update_alt
Download
subject
Read
-christmas-is-here-corduroy-book.pdf
November 14, 2016
Filetype: PDF
|
1076 views
system_update_alt
Download
subject
Read
-studyguide-for-mathematical-physics-advanced-top-book.pdf
December 06, 2016
Filetype: PDF
|
967 views
system_update_alt
Download
subject
Read
-stable-escape-paperback-book.pdf
November 18, 2016
Filetype: PDF
|
3125 views
system_update_alt
Download
subject
Read
-a-laboratory-manual-of-physics-and-applied-elect-book.pdf
October 24, 2016
Filetype: PDF
|
2752 views
system_update_alt
Download
subject
Read
-santa-x27-s-workshop-the-inside-story-book.pdf
August 17, 2016
Filetype: PDF
|
1363 views
system_update_alt
Download
subject
Read
-passport-to-mathematics-daily-cumulative-review--book.pdf
August 23, 2016
Filetype: PDF
|
2096 views
system_update_alt
Download
subject
Read
-rigby-star-independent-year-1-blue-fiction-big-b-book.pdf
December 29, 2016
Filetype: PDF
|
791 views
system_update_alt
Download
subject
Read
-film-and-literature-an-introduction-and-reader-book.pdf
August 11, 2016
Filetype: PDF
|
1033 views
system_update_alt
Download
subject
Read
-fishscale-girl-and-the-upside-down-rain-x2f-la-c-book.pdf
October 04, 2016
Filetype: PDF
|
2768 views
system_update_alt
Download
subject
Read
-kekkaishi-volume-3-book.pdf
October 12, 2016
Filetype: PDF
|
2922 views
system_update_alt
Download
subject
Read
-soldiers-of-god-paperback-book.pdf
October 31, 2016
Filetype: PDF
|
3036 views
system_update_alt
Download
subject
Read
-free-fire-mp3-audio-book-book.pdf
August 01, 2016
Filetype: PDF
|
2694 views
system_update_alt
Download
subject
Read
-the-royal-convert-paperback-book.pdf
December 19, 2016
Filetype: PDF
|
3244 views
system_update_alt
Download
subject
Read
-portfolio-construction-and-analytics-portfolio-c-book.pdf
October 17, 2016
Filetype: PDF
|
2167 views
system_update_alt
Download
subject
Read
-the-methods-of-ethics-book.pdf
October 11, 2016
Filetype: PDF
|
1592 views
system_update_alt
Download
subject
Read
-new-cold-war-how-the-kremlin-menaces-both-russia-book.pdf
December 09, 2016
Filetype: PDF
|
2717 views
system_update_alt
Download
subject
Read
-diamond-in-the-rough-a-memoir-book.pdf
December 28, 2016
Filetype: PDF
|
2260 views
system_update_alt
Download
subject
Read
-the-autobiography-of-st-ignatius-paperback-book.pdf
October 28, 2016
Filetype: PDF
|
2980 views
system_update_alt
Download
subject
Read
-paw-tracks-in-the-moonlight-book.pdf
December 20, 2016
Filetype: PDF
|
602 views
system_update_alt
Download
subject
Read
-case-series-of-new-teaching-nursery-theme-activi-book.pdf
October 22, 2016
Filetype: PDF
|
2247 views
system_update_alt
Download
subject
Read
-miss-hewitt-investigates-the-return-of-the-rippe-book.pdf
December 04, 2016
Filetype: PDF
|
2580 views
system_update_alt
Download
subject
Read
-december-dread-book-8-a-murder-by-month-mystery--book.pdf
January 12, 2017
Filetype: PDF
|
2027 views
system_update_alt
Download
subject
Read
-let-s-start-at-the-very-beginning-back-to-zero-s-book.pdf
January 14, 2017
Filetype: PDF
|
1011 views
system_update_alt
Download
subject
Read
-there-are-no-words-paperback-book.pdf
January 13, 2017
Filetype: PDF
|
721 views
system_update_alt
Download
subject
Read
-professional-communication-book.pdf
August 31, 2016
Filetype: PDF
|
998 views
system_update_alt
Download
subject
Read
-the-home-arts-self-teacher-or-the-cyclopaedia-of-book.pdf
December 02, 2016
Filetype: PDF
|
1558 views
system_update_alt
Download
subject
Read
-domestic-violence-and-mental-health-book.pdf
October 05, 2016
Filetype: PDF
|
506 views
system_update_alt
Download
subject
Read
-what-good-is-god-on-the-road-with-stories-of-gra-book.pdf
November 10, 2016
Filetype: PDF
|
2188 views
system_update_alt
Download
subject
Read
-this-time-love-just-aint-enough-book.pdf
November 09, 2016
Filetype: PDF
|
1552 views
system_update_alt
Download
subject
Read
-good-crooks-book-three-sniff-a-skunk-book.pdf
October 24, 2016
Filetype: PDF
|
1788 views
system_update_alt
Download
subject
Read
-the-framework-for-teaching-evaluation-instrument-book.pdf
August 16, 2016
Filetype: PDF
|
2952 views
system_update_alt
Download
subject
Read
-laser-a1-workbook-with-audio-cd-and-key-book.pdf
October 02, 2016
Filetype: PDF
|
1427 views
system_update_alt
Download
subject
Read
-mill-x27-s-utilitarianism-a-reader-x27-s-guide-r-book.pdf
November 13, 2016
Filetype: PDF
|
2172 views
system_update_alt
Download
subject
Read
-between-parent-and-child-paperback-book.pdf
January 07, 2017
Filetype: PDF
|
2213 views
system_update_alt
Download
subject
Read
Other Files
description
-zeno-x27-s-paradoxes-book.pdf
[51.39 KB]
description
-usgs-mineral-resources-program-supporting-stewar-book.pdf
[51.39 KB]
description
-dancing-with-the-captain-book.pdf
[51.39 KB]
description
-the-hairy-bear-scare-phonics-book.pdf
[51.39 KB]
description
-teaching-mathematics-in-primary-schools-2nd-edit-book.pdf
[51.39 KB]
description
-hind-philosophy-the-s-nkhya-k-rik-of-i-wara-k-is-book.pdf
[51.39 KB]
description
-5-steps-to-a-5-ap-environmental-science-2017-book.pdf
[51.39 KB]
description
-keepsakes-christmas-box-a-holiday-gift-to-unlock-book.pdf
[51.39 KB]
description
-the-imaginary-war-civil-defense-and-american-col-book.pdf
[51.39 KB]
description
-a-damsel-in-distress-paperback-book.pdf
[51.39 KB]
description
-the-third-power-kink-book-a-collection-of-short--book.pdf
[51.39 KB]
description
-southwestern-algebra-2-resource-book-an-integrat-2-book.pdf
[51.39 KB]
description
-homeopat-iacute-a-para-ni-ntilde-os-salud-amp-ni-book.pdf
[51.39 KB]
description
-crs-report-for-congress-homelessness-recent-stat-1-book.pdf
[51.39 KB]
description
-out-of-control-a-fifteen-year-battle-against-con-book.pdf
[51.39 KB]
description
-skirt-steak-book.pdf
[51.39 KB]
description
-scientific-computing-validated-numerics-interval-book.pdf
[51.39 KB]
description
-language-arts-grade-2-student-preparation-and-pr-book.pdf
[51.39 KB]
description
-value-trai-based-risk-management-book.pdf
[51.39 KB]
description
-the-bike-race-you-write-the-story-book-1-book.pdf
[51.39 KB]
description
-compu-m-e-c-h-mechanically-engineered-and-comput-8-book.pdf
[51.39 KB]
description
-neuropsychiatry-and-behavioral-pharmacology-pape-book.pdf
[51.39 KB]
description
-the-little-book-of-lists-book.pdf
[51.39 KB]
description
-the-empty-copper-sea-book.pdf
[51.39 KB]
description
-vocational-practice-guide-tourism-professionals--book.pdf
[51.39 KB]
description
-english-four-full-true-simulation-and-analysis-w-book.pdf
[51.39 KB]
description
-no-time-for-sex-finding-the-time-you-need-for-ge-book.pdf
[51.39 KB]
description
-militarische-mittheilungen-1-v-4-book.pdf
[51.39 KB]
description
-our-real-life-in-christ-experiencing-the-life-an-1-book.pdf
[51.39 KB]
description
-we-don-x27-t-need-roads-the-making-of-the-back-t-book.pdf
[51.39 KB]
description
-sweet-dreams-sudoku-150-fast-fun-puzzles-book.pdf
[51.39 KB]
description
-stories-from-the-middle-seat-the-four-million-mi-book.pdf
[51.39 KB]
description
-the-microblogging-marketing-20-day-fully-buttone-book.pdf
[51.39 KB]
description
-2011-national-the-tender-division-executive-test-book.pdf
[51.39 KB]
description
-the-typhon-pact-seize-the-fire-star-trek-book.pdf
[51.39 KB]
description
-literae-cantuarienses-the-letter-books-of-the-mo-4-book.pdf
[51.39 KB]
description
-polar-orbiting-environmental-satellites-changing-book.pdf
[51.39 KB]
description
-voyage-of-the-capricorn-lady-bk-i-book.pdf
[51.39 KB]
description
-lost-in-the-dream-of-old-man-coyote-paperback-book.pdf
[51.39 KB]
description
-hydroxychloroquine-and-chloroquine-retinopathy-book.pdf
[51.39 KB]
description
-mastering-oil-painting-learn-simple-techniques-a-book.pdf
[51.39 KB]
description
-shakespeareapos-s-sonnets-book.pdf
[51.39 KB]
description
-the-sacred-romance-workbook-and-journal-your-per-book.pdf
[51.39 KB]
description
-vedic-it-information-technology-and-sanskrit-pap-book.pdf
[51.39 KB]
description
-the-ecology-of-others-paradigm-book.pdf
[51.39 KB]
description
-the-era-1947-1957-when-the-yankees-the-giants-an-book.pdf
[51.39 KB]
description
-imaginez-maestro-web-sam-passcode-book.pdf
[51.39 KB]
description
-musculoskeletal-radiology-paperback-book.pdf
[51.39 KB]
description
-tusk-the-mighty-mammoth-book.pdf
[51.39 KB]
description
-i-love-stationery-inspirational-techniques-mater-book.pdf
[51.39 KB]
description
-precalculus-with-calculus-previews-hardback-book.pdf
[51.39 KB]
description
-choosing-a-good-nursing-home-paperback-book.pdf
[51.39 KB]
description
-the-effect-of-civil-war-upon-the-rights-of-perso-book.pdf
[51.39 KB]
description
-creating-smart-board-lessons-yes-you-can-easy-st-book.pdf
[51.39 KB]
description
-adult-coloring-book-submerge-yourself-in-marine--book.pdf
[51.39 KB]
description
-forgotten-london-book.pdf
[51.39 KB]
description
-the-bible-promise-book-too-blessed-to-be-stresse-book.pdf
[51.39 KB]
description
-eshkibok-x27-s-native-12-steps-book.pdf
[51.39 KB]
description
-the-stone-dragon-paperback-book.pdf
[51.39 KB]
description
-angel-city-angelus-trilogy-book.pdf
[51.39 KB]
description
-introduction-to-biomedical-engineering-hardback-book.pdf
[51.39 KB]
description
-the-yellow-wall-paper-herland-and-selected-writi-book.pdf
[51.39 KB]
description
-project-x-code-freeze-skyway-danger-book.pdf
[51.39 KB]
description
-software-cost-estimation-swarm-intelligence-appr-book.pdf
[51.39 KB]
description
-handbook-of-psychological-services-for-children--1-book.pdf
[51.39 KB]
description
-the-secret-diary-of-adrian-mole-aged-13-3-x2f-4--1-book.pdf
[51.39 KB]
description
-nancy-faber-x2f-randall-faber-chordtime-piano-ja-book.pdf
[51.39 KB]
description
-2011-fall-standard-papers-1-grade-language-vol-1-book.pdf
[51.39 KB]
description
-practise-mental-maths-10-11-workbook-book.pdf
[51.39 KB]
description
-pathogenic-biology-and-immunology-nursing-profes-book.pdf
[51.39 KB]
description
-happy-baby-playtime-book.pdf
[51.39 KB]
description
-printers-x27-ink-volume-50-issue-12-book.pdf
[51.39 KB]
description
-computer-organization-and-design-the-hardware-so-book.pdf
[51.39 KB]
description
-drake-for-god-queen-and-plunder-book.pdf
[51.39 KB]
description
-nclex-review-must-know-practice-questions-and-ra-book.pdf
[51.39 KB]
description
-learn-to-do-yo-yo-crochet-paperback-book.pdf
[51.39 KB]
description
-primary-language-fifth-grade-vol-2-pep-curriculu-book.pdf
[51.39 KB]
description
-learning-about-spring-with-children-s-literature-book.pdf
[51.39 KB]
description
-a-memorial-of-george-gilman-fogg-the-address-of--book.pdf
[51.39 KB]
description
-waves-and-imaging-through-complex-media-book.pdf
[51.39 KB]
description
-new-cambridge-proficiency-practice-tests-2-for-t-book.pdf
[51.39 KB]
description
-symbols-of-the-eternal-doctrine-paperback-book.pdf
[51.39 KB]
description
-physical-chemistry-of-macromolecules-basic-princ-book.pdf
[51.39 KB]
description
-little-women-book.pdf
[51.39 KB]
description
-praxis-ii-special-education-core-knowledge-and-m-book.pdf
[51.39 KB]
description
-a-girl-after-god-x27-s-own-heart-devotional-book.pdf
[51.39 KB]
description
-doggy-style-the-cutest-funniest-and-silliest-hau-book.pdf
[51.39 KB]
description
-all-solutions-are-with-the-prophet-s-progeny-pap-book.pdf
[51.39 KB]
description
-discovering-mathematics-with-magma-book.pdf
[51.39 KB]
description
-sic-semper-tyrannis-volume-2-paperback-book.pdf
[51.39 KB]
description
-simple-herbal-and-aromatherapy-recipes-for-your--book.pdf
[51.39 KB]
description
-magistrates-x27-court-index-book.pdf
[51.39 KB]
description
-essential-jazz-elements-mallets-die-komplette-me-book.pdf
[51.39 KB]
description
-narcocorrido-a-journey-into-the-music-of-drugs-g-book.pdf
[51.39 KB]
description
-essentials-of-physical-chemistry-book.pdf
[51.39 KB]
description
-the-house-of-mirth-signet-classics-book.pdf
[51.39 KB]
description
-the-scoliosis-self-help-resource-book-paperback-book.pdf
[51.39 KB]
description
-studyguide-for-elementary-statistics-by-bluman-i-book.pdf
[51.39 KB]
description
-the-swivel-eyed-ogre-thing-book.pdf
[51.39 KB]
description
-zara-the-starlight-fairy-book.pdf
[51.39 KB]
description
-the-emerald-maze-book.pdf
[51.39 KB]
description
-the-best-ever-book-of-money-saving-tips-for-bari-book.pdf
[51.39 KB]
description
-madagascar-escape-2-africa-walk-on-the-wild-side-book.pdf
[51.39 KB]
description
-review-of-neurology-and-psychiatry-volume-6-pape-book.pdf
[51.39 KB]
description
-backyard-sugarin-x27-a-complete-how-to-guide-4th-book.pdf
[51.39 KB]


Before Change
vms = benchmark_spec.vms
vm = vms[0]
logging.info("UnixBench running on %s", vm)
unixbench_command = "cd %s/UnixBench;./Run" % vm.GetScratchDir()
logging.info("Unixbench Results:")
vm.RemoteCommand(unixbench_command, should_log=True)
// TODO(user): The hard work! Parsing this output. For now just print out.
return []
After Change
vms = benchmark_spec.vms
vm = vms[0]
logging.info("UnixBench running on %s", vm)
unixbench_command = "cd {0} && UB_TMPDIR={1} ./Run".format(unixbench.UNIXBENCH_DIR, vm.GetScratchDir())
logging.info("Unixbench Results:")
vm.RemoteCommand(unixbench_command, should_log=True)
// TODO(user): The hard work! Parsing this output. For now just print out.


|
Tactical
Commands
|
Main
Command Menu
|
Computer
Command Menu
|
Miscellaneous
<Q>
Quit and Exit
This exits you from
the game and returns you to the BBS.
<!>
Main Menu Help
Display the portion
of the documentation describing the Main Menu functions.
<Z>
Trade Wars Docs
Display this entire
document. Useful menus are available anytime a ? appears in the prompt.
Specific help files are available wherever an ! appears in the menus.
<V>
View Game Status
Trade Wars 2002 can
be configured in a variety of ways by your SysOp. This display will
show you the static information about the game as well as the current information.
Static information includes the version number, maximum number of sectors,
players, etc., whether or not the local display is on, and if this is a
registered version of the game. The StarDock location may also appear
on this screen if the SysOp has configured the game that way. The
current information will show how many players are now in the game with
the percentage of good, how many planets have been built, how many corporations
are registered, the amount of the universe and how long the game has been
running.
|
Tactical
Commands
|
Exit
Help
|
Computer
Command Menu
|


climlab.process package¶
climlab.process.diagnostic module¶
-
class
climlab.process.diagnostic.
DiagnosticProcess
(**kwargs)[source]¶ Bases:
climlab.process.time_dependent_process.TimeDependentProcess
A parent class for all processes that are strictly diagnostic, namely no time dependence.
During initialization following attribute is set:
Variables: time_type (str) – is set to 'diagnostic'
climlab.process.energy_budget module¶
-
class
climlab.process.energy_budget.
EnergyBudget
(**kwargs)[source]¶ Bases:
climlab.process.time_dependent_process.TimeDependentProcess
A parent class for explicit energy budget processes.
This class solves equations that include a heat capacitiy term like \(C \frac{dT}{dt} = \textrm{flux convergence}\)
In an Energy Balance Model with model state \(T\) this equation will look like this:
\[C \frac{dT}{dt} = R\downarrow - R\uparrow - H \]\[\frac{dT}{dt} = \frac{R\downarrow}{C} - \frac{R\uparrow}{C} - \frac{H}{C}\]Every EnergyBudget object has a
heating_rate
dictionary with items corresponding to each state variable. The heating rate accounts the actual heating of a subprocess, namely the contribution to the energy budget of \(R\downarrow, R\uparrow\) and \(H\) in this case. The temperature tendencies for each subprocess are then calculated through dividing the heating rate by the heat capacitiy \(C\).Initialization parameters
An instance of
EnergyBudget
is initialized with the forwarded keyword arguments**kwargs
of the corresponding children classes.Object attributes
Additional to the parent class
TimeDependentProcess
following object attributes are generated or modified during initialization:Variables:
-
class
climlab.process.energy_budget.
ExternalEnergySource
(**kwargs)[source]¶ Bases:
climlab.process.energy_budget.EnergyBudget
A fixed energy source or sink to be specified by the user.
Object attributes
Additional to the parent class
EnergyBudget
the following object attribute is modified during initialization:Variables: heating_rate (dict) – energy share dictionary for this subprocess is set to zero for every model state. After initialization the user should modify the fields in the
heating_rate
dictionary, which contain heating rates in unit \(\textrm{W}/ \textrm{m}^2\) for all state variables.Example: Creating an Energy Balance Model with a uniform external energy source of \(10 \ \textrm{W}/ \textrm{m}^2\) for all latitudes:
>>> import climlab >>> from climlab.process.energy_budget import ExternalEnergySource >>> import numpy as np >>> # create model & external energy subprocess >>> model = climlab.EBM(num_lat=36) >>> ext_en = ExternalEnergySource(state= model.state,**model.param) >>> # modify external energy rate >>> ext_en.heating_rate.keys() ['Ts'] >>> np.squeeze(ext_en.heating_rate['Ts']) Field([-0., -0., -0., -0., -0., -0., -0., -0., -0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0., -0., -0., -0., -0., -0., -0., -0., -0.]) >>> ext_en.heating_rate['Ts'][:]=10 >>> np.squeeze(ext_en.heating_rate['Ts']) Field([ 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10.]) >>> # add subprocess to model >>> model.add_subprocess('ext_energy',ext_en) >>> print model climlab Process of type <class 'climlab.model.ebm.EBM'>. State variables and domain shapes: Ts: (36, 1) The subprocess tree: top: <class 'climlab.model.ebm.EBM'> diffusion: <class 'climlab.dynamics.diffusion.MeridionalDiffusion'> LW: <class 'climlab.radiation.AplusBT.AplusBT'> ext_energy: <class 'climlab.process.energy_budget.ExternalEnergySource'> albedo: <class 'climlab.surface.albedo.StepFunctionAlbedo'> iceline: <class 'climlab.surface.albedo.Iceline'> cold_albedo: <class 'climlab.surface.albedo.ConstantAlbedo'> warm_albedo: <class 'climlab.surface.albedo.P2Albedo'> insolation: <class 'climlab.radiation.insolation.P2Insolation'>
climlab.process.implicit module¶
-
class
climlab.process.implicit.
ImplicitProcess
(**kwargs)[source]¶ Bases:
climlab.process.time_dependent_process.TimeDependentProcess
A parent class for modules that use implicit time discretization.
During initialization following attributes are intitialized:
Variables: -
_compute
()[source]¶ Computes the state variable tendencies in time for implicit processes.
To calculate the new state the
_implicit_solver()
method is called for daughter classes. This however returns the new state of the variables, not just the tendencies. Therefore, the adjustment is calculated which is the difference between the new and the old state and stored in the object’s attribute adjustment.Calculating the new model states through solving the matrix problem already includes the multiplication with the timestep. The derived adjustment is divided by the timestep to calculate the implicit subprocess tendencies, which can be handeled by the
compute()
method of the parentTimeDependentProcess
class.Variables: adjustment (dict) – holding all state variables’ adjustments of the implicit process which are the differences between the new states (which have been solved through matrix inversion) and the old states.
-
climlab.process.process module¶
-
class
climlab.process.process.
Process
(state=None, domains=None, subprocess=None, lat=None, lev=None, num_lat=None, num_levels=None, input=None, **kwargs)[source]¶ Bases:
object
A generic parent class for all climlab process objects. Every process object has a set of state variables on a spatial grid.
For more general information about Processes and their role in climlab, see Process section climlab-architecture.
Initialization parameters
An instance of
Process
is initialized with the following arguments (for detailed information see Object attributes below):Parameters: - state (Field) – spatial state variable for the process.
Set to
None
if not specified. - domains (
_Domain
or dict of_Domain
) – domain(s) for the process - subprocess (
Process
or dict ofProcess
) – subprocess(es) of the process - lat (array) – latitudinal points (optional)
- lev – altitudinal points (optional)
- num_lat (int) – number of latitudional points (optional)
- num_levels (int) – number of altitudinal points (optional)
- input (dict) – collection of input quantities
Object attributes
Additional to the parent class
Process
following object attributes are generated during initialization:Variables: - domains (dict) – dictionary of process
_Domain
- state (dict) – dictionary of process states
(of type
Field
) - param (dict) – dictionary of model parameters which are given
through
**kwargs
- diagnostics (dict) – a dictionary with all diagnostic variables
- _input_vars (dict) – collection of input quantities like boundary conditions and other gridded quantities
- creation_date (str) – date and time when process was created
- subprocess (dict of
Process
) – dictionary of suprocesses of the process
-
add_input
(inputlist)[source]¶ Updates the process’s list of inputs.
Parameters: inputlist (list) – list of names of input variables
-
add_subprocess
(name, proc)[source]¶ Adds a single subprocess to this process.
Parameters: Raises: ValueError
ifproc
is not a processExample: Replacing an albedo subprocess through adding a subprocess with same name:
>>> from climlab.model.ebm import EBM_seasonal >>> from climlab.surface.albedo import StepFunctionAlbedo >>> # creating EBM model >>> ebm_s = EBM_seasonal() >>> print ebm_s
climlab Process of type <class 'climlab.model.ebm.EBM_seasonal'>. State variables and domain shapes: Ts: (90, 1) The subprocess tree: top: <class 'climlab.model.ebm.EBM_seasonal'> diffusion: <class 'climlab.dynamics.diffusion.MeridionalDiffusion'> LW: <class 'climlab.radiation.AplusBT.AplusBT'> albedo: <class 'climlab.surface.albedo.P2Albedo'> insolation: <class 'climlab.radiation.insolation.DailyInsolation'>
>>> # creating and adding albedo feedback subprocess >>> step_albedo = StepFunctionAlbedo(state=ebm_s.state, **ebm_s.param) >>> ebm_s.add_subprocess('albedo', step_albedo) >>> >>> print ebm_s
climlab Process of type <class 'climlab.model.ebm.EBM_seasonal'>. State variables and domain shapes: Ts: (90, 1) The subprocess tree: top: <class 'climlab.model.ebm.EBM_seasonal'> diffusion: <class 'climlab.dynamics.diffusion.MeridionalDiffusion'> LW: <class 'climlab.radiation.AplusBT.AplusBT'> albedo: <class 'climlab.surface.albedo.StepFunctionAlbedo'> iceline: <class 'climlab.surface.albedo.Iceline'> cold_albedo: <class 'climlab.surface.albedo.ConstantAlbedo'> warm_albedo: <class 'climlab.surface.albedo.P2Albedo'> insolation: <class 'climlab.radiation.insolation.DailyInsolation'>
-
add_subprocesses
(procdict)[source]¶ Adds a dictionary of subproceses to this process.
Calls
add_subprocess()
for every process given in the input-dictionary. It can also pass a single process, which will be given the name default.Parameters: procdict (dict) – a dictionary with process names as keys
-
depth
¶ Property of depth points of the process.
Getter: Returns the points of axis 'depth'
if availible in the process’s domains.Type: array Raises: ValueError
if no'depth'
axis can be found.
-
depth_bounds
¶ Property of depth bounds of the process.
Getter: Returns the bounds of axis 'depth'
if availible in the process’s domains.Type: array Raises: ValueError
if no'depth'
axis can be found.
-
init_diagnostic
(name, value=0.0)[source]¶ Defines a new diagnostic quantity called
name
and initialize it with the givenvalue
.Quantity is accessible and settable in two ways:
- as a process attribute, i.e.
proc.name
- as a member of the diagnostics dictionary,
i.e.
proc.diagnostics['name']
Parameters: Example: Add a diagnostic CO2 variable to an energy balance model:
>>> import climlab >>> model = climlab.EBM() >>> # initialize CO2 variable with value 280 ppm >>> model.init_diagnostic('CO2',280) >>> # access variable directly or through diagnostic dictionary >>> model.CO2 280 >>> model.diagnostics.keys() ['ASR', 'CO2', 'net_radiation', 'icelat', 'OLR', 'albedo']
- as a process attribute, i.e.
-
input
¶ dictionary with all input variables
That can be boundary conditions and other gridded quantities independent of the process
Getter: Returns the content of self._input_vars
.Type: dict
-
lat
¶ Property of latitudinal points of the process.
Getter: Returns the points of axis 'lat'
if availible in the process’s domains.Type: array Raises: ValueError
if no'lat'
axis can be found.
-
lat_bounds
¶ Property of latitudinal bounds of the process.
Getter: Returns the bounds of axis 'lat'
if availible in the process’s domains.Type: array Raises: ValueError
if no'lat'
axis can be found.
-
lev
¶ Property of altitudinal points of the process.
Getter: Returns the points of axis 'lev'
if availible in the process’s domains.Type: array Raises: ValueError
if no'lev'
axis can be found.
-
lev_bounds
¶ Property of altitudinal bounds of the process.
Getter: Returns the bounds of axis 'lev'
if availible in the process’s domains.Type: array Raises: ValueError
if no'lev'
axis can be found.
-
lon
¶ Property of longitudinal points of the process.
Getter: Returns the points of axis 'lon'
if availible in the process’s domains.Type: array Raises: ValueError
if no'lon'
axis can be found.
-
lon_bounds
¶ Property of longitudinal bounds of the process.
Getter: Returns the bounds of axis 'lon'
if availible in the process’s domains.Type: array Raises: ValueError
if no'lon'
axis can be found.
-
remove_diagnostic
(name)[source]¶ Removes a diagnostic from the
process.diagnostic
dictionary and also delete the associated process attribute.Parameters: name (str) – name of diagnostic quantity to be removed
Example: Remove diagnostic variable ‘icelat’ from energy balance model:
>>> import climlab >>> model = climlab.EBM() >>> # display all diagnostic variables >>> model.diagnostics.keys() ['ASR', 'OLR', 'net_radiation', 'albedo', 'icelat'] >>> model.remove_diagnostic('icelat') >>> model.diagnostics.keys() ['ASR', 'OLR', 'net_radiation', 'albedo'] >>> # Watch out for subprocesses that may still want >>> # to access the diagnostic 'icelat' variable !!!
-
remove_subprocess
(name)[source]¶ Removes a single subprocess from this process.
Parameters: name (string) – name of the subprocess
Example: Remove albedo subprocess from energy balance model:
>>> import climlab >>> model = climlab.EBM() >>> print model climlab Process of type <class 'climlab.model.ebm.EBM'>. State variables and domain shapes: Ts: (90, 1) The subprocess tree: top: <class 'climlab.model.ebm.EBM'> diffusion: <class 'climlab.dynamics.diffusion.MeridionalDiffusion'> LW: <class 'climlab.radiation.AplusBT.AplusBT'> albedo: <class 'climlab.surface.albedo.StepFunctionAlbedo'> iceline: <class 'climlab.surface.albedo.Iceline'> cold_albedo: <class 'climlab.surface.albedo.ConstantAlbedo'> warm_albedo: <class 'climlab.surface.albedo.P2Albedo'> insolation: <class 'climlab.radiation.insolation.P2Insolation'> >>> model.remove_subprocess('albedo') >>> print model climlab Process of type <class 'climlab.model.ebm.EBM'>. State variables and domain shapes: Ts: (90, 1) The subprocess tree: top: <class 'climlab.model.ebm.EBM'> diffusion: <class 'climlab.dynamics.diffusion.MeridionalDiffusion'> LW: <class 'climlab.radiation.AplusBT.AplusBT'> insolation: <class 'climlab.radiation.insolation.P2Insolation'>
-
set_state
(name, value)[source]¶ Sets the variable
name
to a new statevalue
.Parameters: Raises: ValueError
if state variablevalue
is not having a domain.Raises: ValueError
if shape mismatch between existing domain and new state variable.Example: Resetting the surface temperature of an EBM to \(-5 ^{\circ} \textrm{C}\) on all latitues:
>>> import climlab >>> from climlab import Field >>> import numpy as np >>> # setup model >>> model = climlab.EBM(num_lat=36) >>> # create new temperature distribution >>> initial = -5 * ones(size(model.lat)) >>> model.set_state('Ts', Field(initial, domain=model.domains['Ts'])) >>> np.squeeze(model.Ts) Field([-5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5., -5.])
- state (Field) – spatial state variable for the process.
Set to
-
climlab.process.process.
get_axes
(process_or_domain)[source]¶ Returns a dictionary of all Axis in a domain or dictionary of domains.
Parameters: process_or_domain (
Process
or_Domain
) – a process or a domain objectRaises: exc: TypeError if input is not or not having a domain Returns: dictionary of input’s Axis
Return type: Example: >>> import climlab >>> from climlab.process.process import get_axes >>> model = climlab.EBM() >>> get_axes(model) {'lat': <climlab.domain.axis.Axis object at 0x7ff13b9dd2d0>, 'depth': <climlab.domain.axis.Axis object at 0x7ff13b9dd310>}
-
climlab.process.process.
process_like
(proc)[source]¶ Copys the given process.
The creation date is updated.
Parameters: proc (
Process
) – processReturns: new process identical to the given process
Return type: Example: >>> import climlab >>> from climlab.process.process import process_like >>> model = climlab.EBM() >>> model.subprocess.keys() ['diffusion', 'LW', 'albedo', 'insolation'] >>> albedo = model.subprocess['albedo'] >>> albedo_copy = process_like(albedo) >>> albedo.creation_date 'Thu, 24 Mar 2016 01:32:25 +0000' >>> albedo_copy.creation_date 'Thu, 24 Mar 2016 01:33:29 +0000'
climlab.process.time_dependent_process module¶
-
class
climlab.process.time_dependent_process.
TimeDependentProcess
(time_type='explicit', timestep=None, topdown=True, **kwargs)[source]¶ Bases:
climlab.process.process.Process
A generic parent class for all time-dependent processes.
TimeDependentProcess
is a child of theProcess
class and therefore inherits all those attributes.Initialization parameters
An instance of
TimeDependentProcess
is initialized with the following arguments (for detailed information see Object attributes below):Parameters: Object attributes
Additional to the parent class
Process
following object attributes are generated during initialization:Variables: - has_process_type_list (bool) – information whether attribute process_types
(which is needed for
compute()
and build in_build_process_type_list()
) exists or not. Attribute is set to'False'
during initialization. - topdown (bool) – information whether the list process_types (which
contains all processes and sub-processes) should be
generated in regular or in reverse order.
See
_build_process_type_list()
. - timeave (dict) – a time averaged collection of all states and diagnostic
processes over the timeperiod that
integrate_years()
has been called for last. - tendencies (dict) – computed difference in a timestep for each state.
See
compute()
for details. - time_type (str) – how time-dependent-process should be computed.
Possible values are:
'explicit'
,'implicit'
,'diagnostic'
,'adjustment'
. - time (dict) –
- a collection of all time-related attributes of the process.
- The dictionary contains following items:
'timestep'
: see initialization parameter'num_steps_per_year'
: seeset_timestep()
andtimestep()
for details'day_of_year_index'
: counter how many steps have been integrated in current year'steps'
: counter how many steps have been integrated in total'days_elapsed'
: time counter for days'years_elapsed'
: time counter for years'days_of_year'
: array which holds the number of numerical steps per year, expressed in days
-
compute
()[source]¶ Computes the tendencies for all state variables given current state and specified input.
The function first computes all diagnostic processes. They don’t produce any tendencies directly but they may effect the other processes (such as change in solar distribution). Subsequently, all tendencies and diagnostics for all explicit processes are computed.
Tendencies due to implicit and adjustment processes need to be calculated from a state that is already adjusted after explicit alteration. For that reason the explicit tendencies are applied to the states temporarily. Now all tendencies from implicit processes are calculated by matrix inversions and similar to the explicit tendencies, the implicit ones are applied to the states temporarily. Subsequently, all instantaneous adjustments are computed.
Then the changes that were made to the states from explicit and implicit processes are removed again as this
compute()
function is supposed to calculate only tendencies and not apply them to the states.Finally, all calculated tendencies from all processes are collected for each state, summed up and stored in the dictionary
self.tendencies
, which is an attribute of the time-dependent-process object, for which thecompute()
method has been called.Object attributes
During method execution following object attributes are modified:
Variables: - tendencies (dict) – dictionary that holds tendencies for all states is calculated for current timestep through adding up tendencies from explicit, implicit and adjustment processes.
- diagnostics (dict) – process diagnostic dictionary is updated by diagnostic dictionaries of subprocesses after computation of tendencies.
-
compute_diagnostics
(num_iter=3)[source]¶ Compute all tendencies and diagnostics, but don’t update model state. By default it will call compute() 3 times to make sure all subprocess coupling is accounted for. The number of iterations can be changed with the input argument.
-
integrate_converge
(crit=0.0001, verbose=True)[source]¶ Integrates the model until model states are converging.
Parameters: Example: >>> import climlab >>> model = climlab.EBM() >>> model.global_mean_temperature() Field(11.997968598413685) >>> model.integrate_converge() Total elapsed time is 10.0 years. >>> model.global_mean_temperature() Field(14.288155406577301)
-
integrate_days
(days=1.0, verbose=True)[source]¶ Integrates the model forward for a specified number of days.
It convertes the given number of days into years and calls
integrate_years()
.Parameters: Example: >>> import climlab >>> model = climlab.EBM() >>> model.global_mean_temperature() Field(11.997968598413685) >>> model.integrate_days(80.) Integrating for 19 steps, 80.0 days, or 0.219032740466 years. Total elapsed time is 0.211111111111 years. >>> model.global_mean_temperature() Field(11.873680783355553)
-
integrate_years
(years=1.0, verbose=True)[source]¶ Integrates the model by a given number of years.
Parameters: It calls
step_forward()
repetitively and calculates a time averaged value over the integrated period for every model state and all diagnostics processes.Example: >>> import climlab >>> model = climlab.EBM() >>> model.global_mean_temperature() Field(11.997968598413685) >>> model.integrate_years(2.) Integrating for 180 steps, 730.4844 days, or 2.0 years. Total elapsed time is 2.0 years. >>> model.global_mean_temperature() Field(13.531055349437258)
-
set_timestep
(timestep=86400.0, num_steps_per_year=None)[source]¶ Calculates the timestep in unit seconds and calls the setter function of
timestep()
Parameters: - timestep (float) – the amount of time over which
step_forward()
is integrating in unit seconds [default: 24*60*60] - num_steps_per_year (float) – a number of steps per calendar year (optional)
If the parameter num_steps_per_year is specified and not
None
, the timestep is calculated accordingly and therefore the given input parameter timestep is ignored.- timestep (float) – the amount of time over which
-
step_forward
()[source]¶ Updates state variables with computed tendencies.
Calls the
compute()
method to get current tendencies for all process states. Multiplied with the timestep and added up to the state variables is updating all model states.Example: >>> import climlab >>> model = climlab.EBM() >>> # checking time step counter >>> model.time['steps'] 0 >>> # stepping the model forward >>> model.step_forward() >>> # step counter increased >>> model.time['steps'] 1
-
timestep
¶ The amount of time over which
step_forward()
is integrating in unit seconds.Getter: Returns the object timestep which is stored in self.param['timestep']
.Setter: Sets the timestep to the given input. See also set_timestep()
.Type: float
- has_process_type_list (bool) – information whether attribute process_types
(which is needed for


Child sexual abuse imagery results in 29 months imprisonment
by Department Of Internal AffairsRichard Thomas King, 52, from Avondale was sentenced today in the Auckland District Court to two years and five months’ imprisonment for knowingly possessing and distributing child sex abuse and exploitation imagery.
Mr King was ordered by the court to register as a child sex offender.

Mr King attempted to upload images depicting child sexual abuse to an online platform, which was detected by the website and reported to the National Centre for Missing and Exploited Children in the United States, who referred the case to the Department of Internal Affairs.
Following an investigation by Internal Affairs, Mr King's computer and mobile phone were seized. Internal Affairs investigators recovered over 100 images of child sexual abuse, despite Mr King's attempt to delete them.
"These images depict real children being abused," says Tim Houston, Manager of the Department’s Censorship Unit. "This is not a victimless crime.
"Our investigators have the skill and expertise to identify and catch anyone who partakes in this type of illegal activity.
"We, along with NZ Police and Customs, are focussed in our efforts to protect New Zealanders and eradicate child sexual abuse and exploitation materials," says Mr Houston.


{% load static %}
{{table.table_id}}
You have not joined any cafe tables yet. Click here to join tables.


| # | name | season | episode |
|---|---|---|---|
| Vampire Diaries | 5 | What a long way we had come | |
| Gotham | 2 | Battle for Gotham | |
| Arrow | 2 | Salvation | |
| Family guy | 5 | Meg | |
| Power | 1 | Last episode | |
| Homeland | 2 | Battle for Gotham | |
| House M.D. | 1 | Pilot | |
| Lost | 2 | Series Finale | |
| House M.D. | 5 | Heaven |
Ross is in a hurry to get everyone ready in time for an important banquet at the museum but they keep delaying...
It's Halloween in Tree Hill and everybody's celebrating at TRIC, with special guest band Fall Out Boy...
A young interracial couple is hospitalized after the husband, Jeremy, attacks robbers who threaten his wife, Tracy.
Aria sees Lucas pounding on the door to get into a photography studio and the girls wonder if perhaps he took the photos at the graveyard. Spencer tells Emily that Garrett is being released to see his mother.
Sam and Dean travel to Maple Springs, New York to investigate a deadly attack against three brothers. Though they believe a werewolf to be the culprit, the lone survivor claims the attacker was a normal man...
Sam and Dean travel to Maple Springs, New York to investigate a deadly attack against three brothers. Though they believe a werewolf to be the culprit, the lone survivor claims the attacker was a normal man...


Your privacy is important: This email is part of our Closed-Loop Opt-In system and was sent to protect the privacy of the owner of this email address (that's you!). Closed-Loop Opt-In confirmation helps guarantee that only the owner of an email address can subscribe themselves to this mailing list.
Privacy Policy for


Networking Logistics
Working on projects that deal with logistics networks, tracking prodcts , people and populations based on who they are connected too.
Blockchain Development, Decentralized Applications or DAPPS, Mobile design for IOS and Android Applications, FrontEnd Design
Working on projects that deal with logistics networks, tracking prodcts , people and populations based on who they are connected too.
Now a days more and more data is being stored in the cloud, How we secure this data is integral to furthering cloud storage ussage.
Theres a lot of data out there, that can be confusing but by extracting information out of these data sets we can create predictions on future trends
How can your Company become accesible to the public?
Integrating payment API's into systems
Creating secure transactions that preserve user privacy
Talk is cheap right? check out my repositories for the real deal.


This test passes if you see a gray rectangle with a list containing sublists as follows: the outermost list items should be numbered using roman numerals; the second-level list should be a bullet list with two items; the innermost list should be numbered using three levels of decimal numbers (e.g. 2.1.1).


|
ARTA
0.2
XML wrapper for the Apache Xerces C++ library
|
#include <xml_makerDOM.hh>
Public Member Functions | |
| makerDOM () | |
| class constructor More... | |
| ~makerDOM () | |
| Class destructor. More... | |
| void * | document (const char *filename, const char *RootNode) override |
| Create/write a XML file from a root node. More... | |
| void * | element (const char *name, const char *value, void *where=nullptr) override |
| Create a document node element. More... | |
| void * | attribute (const char *name, const char *value, void *where=nullptr) override |
| Create a document node attribute. More... | |
| void * | comment (const char *text, void *where=nullptr) override |
| Create a document node comment. More... | |
| void | instruction (const char *name, const char *data) override |
| Create a document node instruction. More... | |
| void | docComment (const char *text) override |
| Create a node comment at the document level. More... | |
| void | writeFile (void) override |
| Write a XML document. More... | |
| Public Member Functions inherited from osapi::xml::maker | |
| virtual | ~maker () |
| Class destructor. More... | |
| void | setCanonicalForm (bool value) |
| Set the Property: canonical-form. More... | |
| void | keepCDSections (bool value) |
| Set the Property: cdata-sections. More... | |
| void | keepComments (bool value) |
| Set the Property: comments. More... | |
| void | typeNormalization (bool value) |
| Set the Property: datatype-normalization. More... | |
| void | discardDefContent (bool value) |
| Set the Property: discard-default-content. More... | |
| void | keepEntities (bool value) |
| Set the Property: entities. More... | |
| void | infoSet (bool value) |
| Set the Property: infoset. More... | |
| void | setNS (bool value) |
| Set the Property: namespaces. More... | |
| void | setNSDeclaritions (bool value) |
| Set the Property: namespace-declarations. More... | |
| void | normalChars (bool value) |
| Set the Property: normalize-characters. More... | |
| void | splitCDSections (bool value) |
| Set the Property: split-cdata-sections. More... | |
| void | setValidation (bool value) |
| Set the Property: validate. More... | |
| void | schemaValidation (bool value) |
| Set the Property: validate-if-schema. More... | |
| void | keepWhitespaces (bool value) |
| Set the Property: element-content-whitespace. More... | |
| void | setPrettyPrint (bool value) |
| Xerces shortcut to set several properties. More... | |
| void | xmlDirective (bool value) |
| Should XML directive be written (to the file)? More... | |
| void | setBOM (bool value) |
| Should the BOM byte written (to the file)? More... | |
Additional Inherited Members | |
| Static Public Member Functions inherited from osapi::xml::maker | |
| static maker * | create (makerType type=makerType::DOM) |
| Create a new XMl Maker instance according to the required type. More... | |
| Protected Member Functions inherited from osapi::xml::maker | |
| maker (void) | |
| class constructor More... | |
| Protected Attributes inherited from osapi::xml::maker | |
| void * | iDoc |
| std::string | iPath |
| Pointer to document. More... | |
| bool | output_canonical_form |
| File path where the document has to be saved. More... | |
| bool | output_keep_cdsections |
| bool | output_keep_comments |
| bool | output_type_normalization |
| bool | output_discard_default_content |
| bool | output_keep_entities |
| bool | output_infoset |
| bool | output_namespaces |
| bool | output_namespaces_declarations |
| bool | output_normalize_characters |
| bool | output_cdsections_split |
| bool | output_validation |
| bool | output_schema_validation |
| bool | output_keep_whitespaces |
| bool | output_pretty_print |
| bool | output_xml_directive |
| bool | output_bom |
|
explicit |
class constructor
| osapi::xml::makerDOM::~makerDOM | ( | ) |
Class destructor.
|
overridevirtual |
Create a document node attribute.
| [in] | name | - Name of XML element |
| [in] | value | - Text of element |
| [in] | where | - At which place should the node be inserted, default is current element |
Implements osapi::xml::maker.
|
overridevirtual |
Create a document node comment.
| [in] | text | - Name of XML element |
| [in] | where | - At which place should the node be inserted, default is current element |
Implements osapi::xml::maker.
|
overridevirtual |
Create a node comment at the document level.
| [in] | text | - XML comment |
Implements osapi::xml::maker.
|
overridevirtual |
Create/write a XML file from a root node.
| [in] | filename | - Pathname of file to create |
| [in] | RootNode | - Name of document root element |
Implements osapi::xml::maker.
|
overridevirtual |
Create a document node element.
| [in] | name | - Name of XML element |
| [in] | value | - Text of element |
| [in] | where | - At which place should the node be inserted, default is current element |
Implements osapi::xml::maker.
|
overridevirtual |
Create a document node instruction.
| [in] | name | - Name of XML element |
| [in] | data | - Text of element |
Implements osapi::xml::maker.
|
overridevirtual |
Write a XML document.
Implements osapi::xml::maker.


Overview
Welcome to the Hyperledger Iroha API docs!
Elevator pitch for Iroha
The system is a distributed ledger platform, capable of storing all history of state-changing actions (called transactions) in immutable linear history (called blockchain). The system is intended to be used in enterprise or between untrusted agents as private chain platform, but not as a public chain — key difference is that not everyone is allowed to store the whole history. A subset of users can only query some data (perform a query) if their accounts have required permissions, while others maintain a peer (Iroha is a peer network), which stores history.
Reliability and security are provided with cryptographic capabilities and Byzantine Fault Tolerant consensus algorithm. The system is targeted to environments, where client applications are very diverse (desktop, various mobile platforms), and peer hardware varies from embedded systems to enterprise-class servers.
Purpose of the docs you are reading
The documentation describes the endpoints for users to send transactions to peer network, containing one or many commands to perform allowed actions in the system, and also make queries to know the current state. Also the documentation contains explanation how to build the system, how to run it and other applicable tutorials.
The API is organized around protobuf format, as Iroha is using gRPC in transport level. Iroha CLI and block store use JSON format to provide developer-friendly experience for contributors. Feel free to check both sections for protobuf and JSON while exploring docs.
Try it yourself
To try out a basic API functionality, do the following:
- Run the system (
irohad
daemon) on a single node. - Run iroha-cli in interactive mode. Command Line Interface app is a client, showing the capabilities of the system.
- Select a necessary action to perform. As you created an initial configuration in genesis block — use the account from genesis block to send transaction or make a query.
- When you fill all the necessary details for commands and formed a transaction; or if you formed a query — you are ready to send it to Iroha peer. Tell the network address and port (by default it is 50051).
Build
To launch Iroha peer network, an executable daemon should be launched. Currently we support Unix-like systems (we are basically targeting at popular Linux distros and macOS), while Windows remains to be a challenge for community and we don't have any plans to support it so far.
If you happen to have Windows or you don't want to spend time figuring out troubles with dependencies on your system — please use Docker environment, made with care for new contributors of Iroha (and hostages of Windows).
Docker
Please, use latest available docker daemon and docker-compose. If you have troubles launching Docker container — it is likely that you have an outdated version.
Clone Git repository
Clone Iroha repository in any convenient folder on your machine.
Cloning Iroha
git clone -b develop --depth=1 \
https://github.com/hyperledger/iroha
How to run development environment
Run the script run-iroha-dev.sh
, contained in the folder scripts
: sh .../iroha/scripts/run-iroha-dev.sh
After you execute this script, following things happen:
- The script checks if you don't have containers with Iroha already running. It ends up with reattaching you to interactive shell upon succesful completion.
- The script will download iroha-docker-develop, redis and postgres images. Iroha image contains all development dependencies, and is based on top of ubuntu:16.04.
- Three containers are created and launched.
- The user is attached to the interactive environment for development and testing with
iroha
folder mounted from the host machine. Iroha folder is mounted to/opt/iroha
in Docker container.
Build project and run tests
Build
cmake -H. -Bbuild;
cmake --build build -- -j$(nproc)
Run shell commands from "Build" section on the right. Built binaries (irohad
and iroha-cli
) will be in ./build/bin
directory.
After you built the project — please run tests to check the operability of the daemon.
Cmake parameters
We use CMake to build platform-dependent build files. It has numerous of the flags for configuring the final build. Note that beside the listed params cmake's vars can be useful as well. Also as long as this page can be deprecated (or just not complete) you can browse custom flags via cmake -L
, cmake-gui
, or ccmake
.
Main params
| Parameter | Possible values | Default | Description |
|---|---|---|---|
| TESTING | ON/OFF | ON | Enables or disables build of the tests |
| BENCHMARKING | ON/OFF | OFF | Enables or disables build of the benchmarks |
| COVERAGE | ON/OFF | OFF | Enables or disables coverage |
| SWIG_PYTHON | ON/OFF | OFF | Enables or disables libraries and native interface bindings for python |
| SWIG_JAVA | ON/OFF | OFF | Enables or disables libraries and native interface bindings for java |
Packaging specific params
| Parameter | Possible values | Default | Description |
|---|---|---|---|
| ENABLE_LIBS_PACKAGING | ON/OFF | ON | Enables or disables all types of packaging |
| PACKAGE_ZIP | ON/OFF | OFF | Enables or disables zip packaging |
| PACKAGE_TGZ | ON/OFF | OFF | Enables or disables tar.gz packaging |
| PACKAGE_RPM | ON/OFF | OFF | Enables or disables rpm packaging |
| PACKAGE_DEB | ON/OFF | OFF | Enables or disables deb packaging |
Add to irohad and iroha-cli to path (optional)
export PATH=.../iroha/build/bin:$PATH
How to run tests method #1
cmake --build build --target test
How to run tests method #2
ctest . # in build folder
Execute iroha-cli
with irohad
running
Execute run-iroha-dev.sh
again to attach to existing container.
Linux or macOS
Launching Docker and Postgres in Docker
docker run --name some-redis \
-p 6379:6379 \
-d redis:3.2.8
docker run --name some-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
-d postgres:9.5
To launch Iroha daemon, running postgres and redis services are required. You may launch them on your local machine, or use docker containers, as provided on the right side.
Linux (debian-based)
To install dependencies, clone, and build the project, please use this code:
Outdated dependencies
In case that some dependencies are outdated in apt, you are advised to use following sources to install dependencies:
Boost
To install Boost libraries (libboost-all-dev
), use current release from Boost webpage, or use debian repository for latest library.
The only dependencies are system and filesystem, so use ./bootstrap.sh --with-libraries=system,filesystem
when you are building the project.
CMake
To install CMake tool (cmake
), use latest release from CMake webpage.
macOS
macOS brew
brew tap soramitsu/iroha
brew install iroha
To install dependencies, clone, and build the project, please use this code:
Run the daemon (irohad)
Create genesis block
A genesis block is the first block in the chain.
Important: each peer in the initialized network should have exactly the same genesis block, so create it once and distribute across peers. This block may have any data, as no-one validates it in the peer network.
Using iroha-cli
Create list of peers
Create peers.list file containing network addresses of peers' internal ports in the network (10001
by default) a single peer address goes on new line. If you want to run Iroha on single peer, it is sufficient to mention only localhost:
$ echo 'localhost:10001' > peers.list
As an example, for 4 peers the file will look like the following:
- <IP_ADDRESS>:10001
- <IP_ADDRESS>:10001
- <IP_ADDRESS>:10001
- <IP_ADDRESS>:10001
Use iroha-cli
Generate genesis block using iroha-cli (see shell command on the right side).
Iroha-cli tool is used to generate keypairs for every peer, mentioned in the peers list. This is done only for convenience — in production environment please consider using manual or more trusted approach.
Generating genesis block
$ iroha-cli --genesis_block \
--peers_address peers.list
Executing this command will result in generation of following files:
<EMAIL_ADDRESS><EMAIL_ADDRESS>— keypair for user with admin and asset creator<EMAIL_ADDRESS><EMAIL_ADDRESS>— keypair for user with user rightsnode0.priv
andnode0.pub
— keypair for first node, mentioned in thepeers.list
- If mentioned more than one peer address in
peers.list
:nodeX.priv
andnodeX.pub
— keypair for #X node, mentioned in the peers.list, (where X is starts from 1) genesis.block
— genesis block itself
Manually
Follow JSON structure of the block, as it is reflected in JSON schema for the block.
Prepare configuration file
Configuration file keeps information about storage credentials and irohad parameters:
| Parameter | Type | Meaning |
|---|---|---|
| block_store_path | string | Path to store blocks of committed transactions (flat file storage) |
| torii_port | integer | Port to access iroha node gRPC (default 50051) |
| internal_port | integer | Port for communication between ordering service, YAC consensus and block loader for synchronization (default 10001) |
| pg_opt | string | Postgres credentials |
| redis_host | string | Redis host IP address |
| redis_port | integer | Port to access redis storage |
| max_proposal_size | integer | Maximum size of created proposals |
| proposal_delay | integer | The period of time (in ms) used to prepare proposal of transactions |
| vote_delay | integer | The period of time (in ms) of spreading vote across the network |
| load_delay | integer | The period of time (in ms) between synchronizations between peers |
Example:
Launch irohad
To launch irohad daemon, following parameters must be passed:
| Parameter | Meaning |
|---|---|
| config | configuration file, containing postgres, and redis connection, and values to tune the system |
| genesis_block | initial block in the ledger |
| keypair_name | private and public key file names without file extension. Used by peer to sign the blocks |
Use this command to launch iroha:
irohad --config example/config.sample --genesis_block example/genesis.block --keypair_name example/node0
Block structure
In order to understand contents of the block better, this section tells about its parts:
Outside payload
- hash — SHA3-512 hash of block protobuf payload
- signatures — signatures of peers, which voted for the block during consensus round
Inside payload
- height — a quantity of blocks in the chain up to the block
- timestamp — unix time (in millis) of block forming by a peer
- body — transactions, which successfully passed validation and consensus step
- transactions quantity
- previous hash of block
Transactions
Transaction
message Transaction {
Payload payload = 1;
repeated Signature signature = 2;
}
{
/* Transaction */
"signatures": array of objects,
"created_ts": int(13),
"creator_account_id": string(?),
"tx_counter": int,
"commands": array of objects
}
A transaction is a state-changing set of actions in the system. When a transaction passes validation and consensus stages, it is written in a block and saved in immutable block store (blockchain).
Transactions consist of commands, performing an action over an entity in the system. The entity might be an account, asset, etc. — more in entity-relationship model page.
Communication between Iroha peer and a client application is maintained via gRPC framework. Client applications should follow described protocol and form transactions accordingly to the description below.
Transaction structure
Each transaction consists of two parts:
- Payload
- Signature
Payload
message Payload {
repeated Command commands = 1;
string creator_account_id = 2;
uint64 tx_counter = 3;
uint64 created_time = 4;
}
{
"commands": [
{
"command_type": string(?),
/* other command-specific fields */
}
],
"creator_account_id": string(?),
"tx_counter": int,
"created_ts": int(13)
}
Signature
message Signature {
bytes pubkey = 1;
bytes signature = 2;
}
{
"signatures": [
{
"pubkey": string(64),
"signature": string(128),
}
], …
}
Payload stores all transaction fields, except signatures:
- Time of creation (unix time, in milliseconds)
- Account ID of transaction creator (username@domain)
- Transaction counter. It counts how many times transaction creator sent transactions in total. Counter is used to prevent replay attack, and is formed on client side
- Repeated commands which are described in details in commands section
Signatures contain one or many signatures (ed25519 public key + signature):
Transaction statuses
The current version of Iroha peer follows client pull principle for networking. It means that client should be proactive and request the state of a transaction from a peer.
This section describes the set of states and matches them with transaction lifecycle.
NOT_RECEIVED
: the peer does not have this transaction.STATELESS_VALIDATION_FAILED
: the transaction was formed with some fields, not meeting constraints. This status is returned to a client, who formed transaction, right after the transaction was sent.STATELESS_VALIDATION_SUCCESS
: the transaction has successfully passed stateless validation. This status is returned to a client, who formed transaction, right after the transaction was sent.STATEFUL_VALIDATION_FAILED
: the transaction has commands, which violate validation rules, checking state of the chain (e.g. asset balance, account permissions, etc.)STATEFUL_VALIDATION_SUCCESS
: the transaction has successfully passed stateful validation.IN_PROGRESS
: the transaction was received, but not yet processed by stateless validatorCOMMITTED
: the transaction is the part of a block, which gained enough votes and is in the block store at the moment.
Commands
A command changes the state, called World State View, by performing an action over an entity (asset, account) in the system. Any command should be included in a transaction to perform an action.
Add asset quantity
Purpose
The purpose of add asset quantity command is to increase the quantity of an asset on account of transaction creator. Use case scenario is to increase the number of mutable asset in the system, which can act as a claim on a commodity (e.g. money, gold, etc.)
Structure
message AddAssetQuantity {
string account_id = 1;
string asset_id = 2;
Amount amount = 3;
}
message uint256 {
uint64 first = 1;
uint64 second = 2;
uint64 third = 3;
uint64 fourth = 4;
}
message Amount {
uint256 value = 1;
uint32 precision = 2;
}
{
"commands": [
{
"command_type": "AddAssetQuantity",
"account_id": "test@test",
"asset_id": "coin#test",
"amount": {
"value": string,
"precision": int
}
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id in which to add asset | account_name@domain |
| Asset ID | id of the asset | asset#account |
| Amount | positive amount of the asset to add | > 0 |
Validation
- Asset and account should exist
- Added quantity precision should be equal to asset precision
- Creator of transaction should have role which has permissions for issuing assets
- Creator of transaction adds account quantity to his/her account only
Add peer
Purpose
The purpose of add peer command is to write into ledger the fact of peer addition into the peer network. After the peer was added, consensus and synchronization components will start using it.
Structure
message AddPeer {
Peer peer = 1;
}
message Peer {
string address = 1;
bytes peer_key = 2;
}
{
"commands": [
{
"command_type": "AddPeer",
"peer": {
"address": "<IP_ADDRESS>:50001",
"peer_key": string(64)
}
},
], …
}
| Field | Description | Constraint |
|---|---|---|
| Address | resolvable address in network (IPv4, IPv6, domain name, etc.) | should be resolvable |
| Peer key | peer public key, which will be used in consensus algorithm to sign-off vote, commit, reject messages | ed25519 public key |
Validation
- Creator of the transaction has a role which has CanAddPeer permission.
- Such network address has not been already added.
Add signatory
Purpose
The purpose of add signatory command is to add an identifier to the account. Such identifier is a public key of another device or a public key of another user.
Structure
message AddSignatory {
string account_id = 1;
bytes public_key = 2;
}
{
"commands": [
{
"command_type": "AddSignatory",
"account_id": "test@test",
"public_key": string(64)
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | Account to which to add signatory | account_name@domain |
| Public key | Signatory to add to account | ed25519 public key |
Validation
Two cases: Case 1. Transaction creator wants to add signatory to his or her account, having permission CanAddSignatory Case 2. CanAddSignatory was granted to transaction creator
Append role
Purpose
The purpose of append role command is to promote an account to some created role in the system, where role is a set of permissions account has to perform an action (command or query).
Structure
message AppendRole {
string account_id = 1;
string role_name = 2;
}
{
"commands": [
{
"command_type": "AppendRole",
"account_id": "takemiya@test",
"role_name": "Administrator"
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | id or account to append role to | already existent, account_name@domain |
| Role name | name of already created role | already existent, [A-Za-z0-9_]{1,7} |
Validation
- Role should exist in the system
- Transaction creator should have permissions to append role (CanAppendRole)
- Account, which appends role, has set of permissions in his roles bigger than or equal to the size of permission set of appended role.
Create account
Purpose
The purpose of create account command is to make entity in the system, capable of sending transactions or queries, storing signatories, personal data and identifiers.
Structure
message CreateAccount {
string account_name = 1;
string domain_id = 2;
bytes main_pubkey = 3;
}
{
"commands": [
{
"command_type": "CreateAccount",
"account_name": "makoto.takemiya",
"domain_id": "test",
"main_pubkey": string
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account name | domain-unique name for account | A string in domain-name syntax defined in RFC1035. An account name is a list of labels separated by a period . . A label is a sequence of characters in [a-zA-Z-] . The length of a label must not exceed 63 characters |
| Domain ID | target domain to make relation with | should be created before the account, [0-9A-Za-z]{1,9} |
| Main pubkey | first public key to add to the account | ed25519 public key |
Validation
- Transaction creator has permission to create account
- Domain, passed as domain_id, has already been created in the system
- Such public key has not been added before as first public key of account or added to multi-signature account
Create asset
Purpose
The purpose of сreate asset command is to create a new type of asset, unique in a domain. An asset is a countable representation of a commodity.
Structure
message CreateAsset {
string asset_name = 1;
string domain_id = 2;
uint32 precision = 3;
}
{
"commands": [
{
"command_type": "CreateAsset",
"asset_name": "usd",
"domain_id": "test",
"precision": "2"
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Asset name | domain-unique name for asset | [A-Za-z0-9]{1,9} |
| Domain ID | target domain to make relation with | should be created before the asset, [A-Za-z0-9]{1,9} |
| Precision | number of digits after comma/dot | 0 <= precision <= uint32 max |
Validation
- Transaction creator has permission to create assets
- Asset name is unique per domain
Create domain
Purpose
The purpose of create domain command is to make new domain in Iroha network, which is a group of accounts.
Structure
message CreateDomain {
string domain_id = 1;
string default_role = 2;
}
{
"commands": [
{
"command_type": "CreateDomain",
"domain_id": "test2",
"default_role": "User"
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Domain ID | ID for created domain | unique, [0-9A-Za-z]{1,9} |
| Default role | role for any created user in the domain | one of the existing roles |
Validation
- domain id is unique
- Account, who sends this command in transaction, has role with permission to create domain
- Role, which will be assigned to created user by default
Create role
Purpose
The purpose of create role command is to create new role in the system from the set of permissions. Combining different permissions into roles, maintainers of Iroha peer network can create customized security model.
Structure
message CreateRole {
string role_name = 1;
repeated string permissions = 2;
}
{
"commands": [
{
"command_type": "CreateRole",
"role_name": "MoneyCreator",
"permissions": [
"CanAddAssetQuantity",
…
]
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Role name | name of role to create | [A-Za-z0-9_]{1,7} |
| Permissions | array of already existent permissions | set of passed permissions is fully included into set of existing permissions |
Validation
- Set of passed permissions is fully included into set of existing permissions
Detach role
Purpose
The purpose of detach role command is to detach a role from the set of roles of an account. By executing this command it is possible to decrease the number of possible actions in the system for the user.
Structure
message DetachRole {
string account_id = 1;
string role_name = 2;
}
{
"commands": [
{
"command_type": "DetachRole",
"account_id": "test@test",
"role_name": "user"
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | ID of account where role will be deleted | already existent, account_name@domain |
| Role name | detached role | existing role |
Validation
- Role exists in the system
- Account has such role
Grant permission
Purpose
The purpose of grant permission command is to give another account rights to perform actions over the account of transaction sender (give someone right to do something with my account).
Structure
message GrantPermission {
string account_id = 1;
string permission_name = 2;
}
{
"commands": [
{
"command_type": "GrantPermission",
"account_id": "takemiya@soramitsu",
"permission_name": "CanAddAssetQuantity"
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | id of account whom rights are granted | already existent, account_name@domain |
| Permission name | name of granted permission | permission is defined |
Validation
- Account exists
- Transaction creator is allowed to grant this permission
Remove signatory
Purpose
Purpose of remove signatory command is to remove public key, associated with an identity, from an account
Structure
message RemoveSignatory {
string account_id = 1;
bytes public_key = 2;
}
{
"commands": [
{
"command_type": "RemoveSignatory",
"account_id": "takemiya@test",
"public_key": string(64)
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | ID of account to delete signatory from | already existent, account_name@domain |
| Public key | Signatory to delete | ed25519 public key |
Validation
When signatory is deleted, we should check if invariant of size(signatories) >= quorum holds. Signatory should have been previously added to the account
Two cases: Case 1. When transaction creator wants to remove signatory from their account and he or she has permission CanRemoveSignatory Case 2. CanRemoveSignatory was granted to transaction creator
Revoke permission
Purpose
The purpose of revoke permission command is to revoke or dismiss given granted permission from another account in the network.
Structure
message RevokePermission {
string account_id = 1;
string permission_name = 2;
}
{
"commands": [
{
"command_type": "RevokePermission",
"account_id": "takemiya@soramitsu",
"permission_name": "CanAddAssetQuantity"
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | id of account whom rights were granted | already existent, account_name@domain |
| Permission name | name of revoked permission | permission is defined |
Validation
- Transaction creator should have previously granted this permission to target account
Set account detail
Purpose
Purpose of set account detail command is to set key-value information for a given account
Structure
message SetAccountDetail{
string account_id = 1;
string key = 2;
string value = 3;
}
{
"commands": [
{
"command_type": "SetAccountDetail",
"account_id": "takemiya@soramitsu",
"key": "position",
"value": "Co-CEO"
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | id of account whom key-value information was set | already existent, account_name@domain |
| Key | key of information being set | [A-Za-z0-9_]{1,} |
| Value | value of corresponding key | - |
Validation
Two cases: Case 1. When transaction creator wants to set account detail to his/her account and he or she has permission CanSetAccountInfo Case 2. CanSetAccountInfo was granted to transaction creator
Set account quorum
Purpose
The purpose of set account quorum command is to set the number of signatories required to confirm the identity of user, who creates the transaction. Use case scenario is to set the number of different users, utilizing single account, to sign off the transaction.
Structure
message SetAccountQuorum {
string account_id = 1;
uint32 quorum = 2;
}
{
"commands": [
{
"command_type": "SetAccountQuorum",
"account_id": "takemiya@test",
"quorum": 5
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | ID of account to set quorum | already existent, account_name@domain |
| Quorum | number of signatories needed to be included with a transaction from this account | 0 < quorum < 10 |
Validation
When quorum is set, it is checked if invariant of size(signatories) >= quorum holds.
Two cases: Case 1. When transaction creator wants to set quorum for his/her account and he or she has permission CanRemoveSignatory Case 2. CanRemoveSignatory was granted to transaction creator
Subtract asset quantity
Purpose
The purpose of subtract asset quantity command is the opposite of AddAssetQuantity commands — to decrease the number of assets on account of transaction creator.
Structure
message AddAssetQuantity {
string account_id = 1;
string asset_id = 2;
Amount amount = 3;
}
message uint256 {
uint64 first = 1;
uint64 second = 2;
uint64 third = 3;
uint64 fourth = 4;
}
message Amount {
uint256 value = 1;
uint32 precision = 2;
}
{
"commands": [
{
"command_type": "SubtractAssetQuantity",
"account_id": "test@test",
"asset_id": "coin#test",
"amount": {
"value": string,
"precision": int
}
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id from which to subtract asset | account_name@domain |
| Asset ID | id of the asset | asset#account |
| Amount | positive amount of the asset to add | > 0 |
Validation
- Asset and account should exist
- Added quantity precision should be equal to asset precision
- Creator of transaction should have role which has permissions for subtraction of assets
- Creator of transaction subtracts account quantity in his/her account only
Transfer asset
Purpose
The purpose of transfer asset command is to share assets within the account in peer network: in the way that source account transfers assets to target account.
Structure
message TransferAsset {
string src_account_id = 1;
string dest_account_id = 2;
string asset_id = 3;
string description = 4;
Amount amount = 5;
}
{
"commands": [
{
"command_type": "TransferAsset",
"src_account_id": "takemiya@test",
"dest_account_id": "nikolai@test",
"asset_id": "coin#test",
"description": "Salary payment",
"amount": {
"int_part": 20,
"precision": 0
}
}
], …
}
| Field | Description | Constraint |
|---|---|---|
| Source account ID | ID of account to withdraw asset from | already existent, account_name@domain |
| Destination account ID | ID of account to send asset at | already existent, account_name@domain |
| Asset ID | ID of asset to use | already existent, asset_name#domain |
| Description | Message to attach to transfer | No constraints |
| Amount | amount of asset to transfer | 0 < amount < max_uint256 |
Validation
- Source account has this asset in its AccountHasAsset relation
- An amount is a positive number and asset precision is consistent with the asset definition
- Source account has enough amount of asset to transfer and is not zero
- Source account can transfer money, and destination account can receive money (their roles have these permissions)
Queries
Query structure
message Query {
message Payload {
uint64 created_time = 1;
string creator_account_id = 2;
oneof query {
GetAccount get_account = 3;
GetSignatories get_account_signatories = 4;
GetAccountTransactions get_account_transactions = 5;
GetAccountAssetTransactions get_account_asset_transactions = 6;
GetTransactions get_transactions = 7;
GetAccountAssets get_account_assets = 8;
GetRoles get_roles = 9;
GetRolePermissions get_role_permissions = 10;
GetAssetInfo get_asset_info = 11;
}
// used to prevent replay attacks.
uint64 query_counter = 12;
}
Payload payload = 1;
Signature signature = 2;
}
Each query consists of the following fields:
- Payload, which contains created time, id of account creator, query counter and a query object
- Signature, which signs payload
Payload stores everything except signatures:
- Time of creation (unix time, in milliseconds)
- Creator account_id stores account id in form username@domain
- Query counter is used to prevent replay attack and it is formed on client side
- Query object might be of any type, described below
Signatures contain one or many signatures (ed25519 pubkey + signature).
Validation
The validation for all commands includes:
- timestamp — should not be older than 24 hours from the peer's time
- signature of query creator — used for checking the identity of query creator
- query counter — checked to be incremented with every subsequent query from query creator
- roles — depending on the query creator's role, it can be applied to the same account, account in the domain, in the whole system or not allowed at all
Get account
Purpose
Purpose of get account query is to get the state of an account.
This Query returns AccountResponse
, which contains array with roles of the account and Account
object with following fields:
- account_id
- domain_name
- permissions object
- quorum — the quantity of signatures to pass within transaction to execute commands for this account
Structure
Query
Query
message GetAccount {
string account_id = 1;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetAccount",
"account_id": "test@test"
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id to request its state | username@domain |
Response
Response
message AccountResponse {
Account account = 1;
repeated string account_roles = 2;
}
message Account {
string account_id = 1;
string domain_id = 2;
uint32 quorum = 3;
string json_data = 4;
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id | username@domain |
| Domain ID | domain of account id | [A-Za-z0-9]{1,9} |
| Quorum | number of signatories needed to sign the transaction to make it valid | integer |
| json_data | key-value information | properly formed json information |
Get signatories
Purpose
Purpose of get signatories query is to get signatories, which act as an identity of the account.
This Query returns SignatoriesResponse
, which is one or many public ed25519 keys.
Structure
Query
Query
message GetSignatories {
string account_id = 1;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetSignatories",
"account_id": "test@test"
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id to request signatories | username@domain |
Response
Response
message SignatoriesResponse {
repeated bytes keys = 1;
}
| Field | Description | Constraint |
|---|---|---|
| Keys | an array of public keys | ed25519 |
Get account transactions
Purpose
In a case when a list of transactions per account is needed, GetAccountTransactions
query can be formed.
This Query returns TransactionsResponse
, which is a collection of transactions.
Structure
Query
Query
message GetAccountTransactions {
string account_id = 1;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetAccountTransactions",
"account_id": "test@test"
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id to request transactions from | username@domain |
Response
Response
message TransactionsResponse {
repeated Transaction transactions = 1;
}
| Field | Description | Constraint |
|---|---|---|
| Transactions | an array of transactions for given account | Committed transaction |
Get account asset transactions
Purpose
GetAccountAssetTransactions
query returns all transactions associated with given account and asset
This Query returns TransactionsResponse
, which is a collection of transactions.
Structure
Query
Query
message GetAccountAssetTransactions {
string account_id = 1;
string asset_id = 2;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetAccountAssetTransactions",
"account_id": "test@test",
"asset_id": "coin#test"
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id to request transactions from | username@domain |
| Asset ID | asset id in order to filter transactions containing this asset | asset_name#domain |
Response
Response
message TransactionsResponse {
repeated Transaction transactions = 1;
}
| Field | Description | Constraint |
|---|---|---|
| Transactions | an array of transactions for given account and asset | Committed transactions |
Get transactions
Purpose
GetTransactions
is used for retrieving information about transactions, based on their hashes.
This Query returns TransactionsResponse
, which is a collection of transactions.
Structure
Query
Query
message GetTransactions {
repeated bytes tx_hashes = 1;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetTransactions",
"tx_hashes": [string(64),…]
}
| Field | Description | Constraint |
|---|---|---|
| Transactions hashes | transactions' hashes to request transactions from | (proto) array of 32 bytes, (json) 64 size of hex strings |
Response
Response
message TransactionsResponse {
repeated Transaction transactions = 1;
}
| Field | Description | Constraint |
|---|---|---|
| Transactions | an array of transactions for given account and asset | Committed transactions |
Get account assets
Purpose
To know the state of an asset per account (balance), GetAccountAssets
query can be formed.
This Query returns AccountAssetResponse
.
Structure
Query
Query
message GetAccountAssets {
string account_id = 1;
string asset_id = 2;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetAccountAssets",
"account_id": "test@test",
"asset_id": "coin#test",
}
| Field | Description | Constraint |
|---|---|---|
| Account ID | account id to request balance from | username@domain |
| Asset ID | asset id to know its balance | asset_name#domain |
Response
Response
message AccountAsset {
string asset_id = 1;
string account_id = 2;
Amount balance = 3;
}
message AccountAssetResponse {
AccountAsset account_asset = 1;
}
| Field | Description | Constraint |
|---|---|---|
| Asset ID | identifier of asset used for checking the balance | asset_name#domain |
| Account ID | account which has this balance | username@domain |
| Balance | balance of asset | > 0 |
Get asset info
Purpose
In order to know precision for given asset, and other related info in the future, such as a description of the asset, etc. user can send GetAssetInfo
query.
This Query returns AssetResponse
with an information about the asset.
Structure
Query
Query
message GetAssetInfo {
string asset_id = 1;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetAssetInfo",
"asset_id": "coin#test",
}
| Field | Description | Constraint |
|---|---|---|
| Asset ID | asset id to know related information | asset_name#domain |
Response
Response
message AssetResponse {
Asset asset = 1;
}
message Asset {
string asset_id = 1;
string domain_id = 2;
uint32 precision = 3;
}
| Field | Description | Constraint |
|---|---|---|
| Asset ID | asset id to get information about | [A-Za-z0-9]{1,9} |
| Domain ID | domain related to this asset | [A-Za-z0-9]{1,9} |
| Precision | number of digits after comma | uint8_t |
Get roles
Purpose
To get existing roles in the system, a user can send GetRoles
query to Iroha network.
This Query returns RolesResponse
containing an array of existing roles.
Structure
Query
Query
message GetRoles {
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetRoles",
}
Response
Response
message RolesResponse {
repeated string roles = 1;
}
| Field | Description | Constraint |
|---|---|---|
| Roles | array of created roles in the network | vector of strings describing existing roles in the system |
Get role permissions
Purpose
To get available permissions per role in the system, a user can send GetRolePermissions
query to Iroha network.
This Query returns RolePermissionsResponse
containing an array of permissions related to the role.
Structure
Query
Query
message GetRolePermissions {
string role_id = 1;
}
{
"signature":
{
"pubkey": "…",
"signature": "…"
},
"created_ts": …,
"creator_account_id": "admin@test",
"query_counter": 1,
"query_type" : "GetRolePermissions",
"role_id" : "MoneyCreator",
}
| Field | Description | Constraint |
|---|---|---|
| Role ID | role to get permissions for | string describing role existing in the system |
Response
Response
message RolePermissionsResponse {
repeated string permissions = 1;
}
| Field | Description | Constraint |
|---|---|---|
| Permissions | array of permissions related to the role | string of permissions related to the role |
Entity-relationship model
This section describes the contents of World State View, or in other words — the state of entities as per the latest block in the chain.
Peer
- address — network address and internal port, is used for synchronization, consensus, and communication with the ordering service
- public_key — key, which will be used for signing blocks during consensus process
Asset
- asset_id — identifier of asset, formatted as asset_name#domain_id
- domain_id — identifier of domain, where the asset was created, references existing domain
- precision — size of fractional part
- data — JSON with arbitrary structure of asset description
Signatory
- public_key — a public key
Domain
- domain_id — identifier of a domain
- default_role — a default role per user created in the domain, references existing role
Role
- role_id — identifier of role
RoleHasPermissions
- role_id — identifier of role, references existing role
- permission_id — an id of predefined role
Account
- account_id — identifier of account, formatted as account_name@domain_id
- domain_id — identifier of domain where the account was created, references existing domain
- quorum — number of signatories required for creation of valid transaction from this account
- transaction_count – counter of transactions created by this account
- data — key-value storage for any information, related to the account
AccountHasSignatory
- account_id — identifier of account, references existing account
- public_key — a public key (which is also called signatory), references existing signatory
AccountHasAsset
- account_id — identifier of account, references existing account
- asset_id — identifier of asset, references existing asset
- amount — an amount of the asset, belonging to the account
AccountHasRoles
- account_id — identifier of account, references existing account
- role_id — identifier of role, references existing role
AccountHasGrantablePermissions
- account_id — identifier of account, references existing account. This account gives grantable permission to perform operation over itself to permittee.
- permittee_account_id — identifier of account, references existing account. This account is given permission to perform operation over account_id.
- permission_id — identifier of grantable_permission
Command Line Interface
Iroha Command Line Interface (CLI) is a tool for creation of transaction containing commands from the command line, or sending queries to Iroha. It is intended to simplify interaction between the client side and Iroha peer. CLI could be also used for keypair generation.
Interactive mode of cli in a nutshell represents number of steps, where at each step user must interact with the system. To choose one of the options can type short name of the command specified in parentheses, or number of the command in the menu.
Keypair generation
To generate files containing private and public keys --new_account
flag should be used.
Example:
bash
iroha-cli --new_account --account_name alice@ru --pass_phrase mysupersecretpassword --key_path ./
After that<EMAIL_ADDRESS>and<EMAIL_ADDRESS>files will be generated in the key_path
folder. By default key_path
if not specified is the folder where iroha-cli has been launched.
Interactive mode
Run:
iroha-cli --interactive --account_name your_account_id --key_path /path/to/keys
Your account_id
is used as the creator of the queries and transactions for signing up messages with accounts keys and fill up counters.
You can specify the location of the keypairs associated with the account_id
using key_path
flag. By default, current folder is used.
Starting menu
At the start of cli user has two possible modes:
- Start a transaction
- Start a query
- Get status of a transaction
Transaction CLI
Start up of transaction cli will trigger the creation of a new transaction. Each transaction consists of commands, being equal or less than 65000. User is offered to add commands to the new transaction. All meta data of the transaction will be filled automatically (signature, tx_counter, creator account, timestamp). Currently, following Iroha commands are supported in Interactive CLI:
Back option will switch back to main menu. To add command to the transaction there are two options:
- Type number of the command in the menu, or command name without parameters:
This will iterate through the parameters of the command and ask user to type the parameter value.
For example typing "9" will create
set account quorum
command, and ask to typeaccount id
andquorum
: - Type command name with all needed parameters .
This option can be used to quickly add command to transaction. For example typing:
set_qrm test@test 2
- will create Set_Account_Quorum command for account:test@test
and quorum: 2.
After adding the command, result menu will be printed:
- User can add more commands to the same transaction
- User can send to Iroha peer
- Go back and create new transaction (this will delete previous transaction)
- Save transaction as json file locally
Query CLI
Interactive query cli is build similarly as Transaction CLI. Query meta data will be assigned automatically (query_counter, time_stamp, creator_account, signature) Currently, interactive cli supports the following queries:
For each query there two possible modes to run:
- By typing appropriate number of query, either the corresponding abbreviation specified in parentheses.
- Typing the command abbreviation with appropriated parameters.
After query is formed there are following options:
- Save query as json
- Send to Iroha Peer and receive QueryResponse
- Back option, will return to query choice menu and remove current query.


Your salary
How much to invest in shopping?
%
Amount to spend on gadgets is:
{{ result() | currency }}


A Queue object defines a location for simulation entities to wait for processing by other entities.
Unlike many other objects in this palette, an entity received by a Queue is not passed automatically to the next object. It must wait in the Queue until it is removed by some other object. Queues are used in this way by the Server, Seize, EntityGate, Assemble, Combine, Pack, Unpack, AddTo, and RemoveFrom objects. Whenever an entity is added to a Queue, all the objects that use this Queue are notified that a new entity is available. The first available object will remove the entity from the Queue and start processing it.
Queued entities can be sequenced by an optional priority value specified by the Priority keyword. In most cases, the Priority is specified by an Expression that is evaluated when the entity first arrives at the Queue. Priority is integer valued and decimal values will be truncated, which means, for example, that priority values of 3.2 and 3.6 are identical (i.e. truncated to 3).
Entities with the same priority values can be sequenced in either the default first-in-first-out (FIFO) order, or in last-in-first-out order (LIFO).
Lastly, a queued entity can be provided with an optional identification using the Match keyword. Objects that use Queues, such as a Server, can request its Queue to provide the first entity with a specified value for the Match keyword. As with the Priority keyword, in most cases the Match value is specified by an Expression that is evaluated when the entity first arrives at the Queue. The Match variable is stored as a string, but will also accept a dimensionless integer or an entity which will be converted to a string. If a decimal value is provided, it will be truncated.


What are some unlucky signs that have happened to you within the past month?
What are some lucky signs that have happened to you within the past month?
Your fortune is: