Creating your own seed

If there is one thing you should take care about if you are in crypto/blockchain take your privatekeys, seeds, passwords seriously private!

You are now your own bank — there is no person or group which acts as a link between you and safe ground — you are responsible.

This is why you should never use any seed generators without understanding why and what and how.

For our purpose we just can stick to good old chap Linux for generating us a nice little acceptable seed which should be 81 characters long should only have capital letters and the number 9 — please in a random fashion…

cat /dev/urandom |tr -dc A-Z9|head -c${1:-81}

you might think what is wrong with Jan? he just told me I should never expose it and he almost fu** … paste it here…

Yeah i did not (the last letter are covered with a thick red paint though) but if you like to try — here is the challenge: Whoever get access to my devnet tokens on this wallet (how to get devnet tokens i will show you later) will get a special award. Its just guessing about 9–10 characters or you might want to brute force it.

The best learning here would be if you can understand that exposing your seed is crazy and that even with only 9–10 letter left its hard to guess your seed but not impossible. If you think you could just guess the 81 character please watch this

and just to make it more easy here is the part of the exposed seed for copy and paste (without 9–10 chars)

BIOBBXLOWLVSIBNAORH9VDZCQO9GUYAYCLDUY9W9UKSUCPONSSBPUCDAUUEOZIUXSBTEC9RI

So if you crack the last letter you could control the wallet (as this is on the devnet — you won’t get rich anyways)

We should really repeat all the stuff we have done prior and in the first article again to understand what is a seed ~ wallet. An address ~ temporary storage of information / value and how i can get tokens…

For now we are just changing our transfer function to be used with our seed and send again a zero value transaction:

This will give us when executed

Troubleshoot: As I’ve experienced problems with the remote PoW please just do the above code without the following two lines (in order to leave the PoW executed by the node rather than the powbox)

//const remoteCurl = require("@iota/curl-remote")

//remoteCurl(iota, "https://powbox.testnet.iota.org", 500)

Ok that means we have send from our seed (which is now private) a zero value transaction over the test net to the very popular address HELLOWORLDHELLOWORLD….

But what happens if i send a non-zero value transaction (I want to send devnet tokens to this address) — well than you need to have tokens send to your address first.

Create your first own address

Lets do it than. Create an address where only you — the seed holder has control of.

Just create a new little file and name it e.g. genNewAdress.js and copy your seed as const and the command as shown below

const seed = "PasteYourSeedHere" iota.api.getNewAddress (seed, (error, success) => {

if(error){

console.log(error)

}else {

console.log(success)

}

})

After executing it you will get something similar (Your address is unique and obviously looks different than mine)

FBTICMZPRTLDFYZZSMBABZTBULMWZVRKZPXTFJEIOPUJLFQDIOPWHKCXKIBPYBGXBSHZIBRYUBMYCRGHA

The special thing about this address is that it belongs to me and only I am able to send value from this address to another address using my seed.

Get your devnet tokens

So lets get devnet tokens here:

I just paste my freshly created address in this little app and i get an ETA for receiving my tokens

Cool — I should have tokens but i don’t know hot to check them. Come on lets check via command line our balance.

Get your addresses balances

You could probably only have a look at that particular address but exploring IOTA further will show us that every time i spend form this address all remaining funds will be transferred to the next address generated from this seed. That means we would like to get the balance from all existing addresses created by this seed.

I have done this by nesting the getBalance command into the getNewAddress command (i’ve changed the operator => to include the function expression for better visibility)

const seed = "...." var addresses = new Set()

var allAddresses iota.api.getNewAddress(seed, {'returnAll':true}, function(error, allAddresses) {

if(error) {

console.log(error)

} else {

allAddresses.forEach(function(addr) { addresses.add(addr)})

console.log(allAddresse)

iota.api.getBalances(allAddresses, 10, function(error, success) {

if(error) {

console.log(error)

}else {

console.log(success)

}

})

}

})

Congratulation you have received 1000 IOTA!

Send a non-zero value transaction

Now we could send to the popular Address “HELLOWORL…” some IOTAs — just because we can. Just copy the send.js and create a send_fromWallet.js script with your seed and changing the value from 0i to 1i.

const seed = "PasteYourSeedHere"

const message = iota.utils.toTrytes("I will send you 1i for just because i can....") address = "HELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDD" const transfers = [{

value: 1,

address: address,

message: message

}] iota.api.sendTransfer(seed, 3, 9, transfers, (error, success) => {

if (error) {

console.log(error)

} else {

console.log(success)

}

})

After executing this script you will receive a lot of information:

[ { hash: 'GIXQQGFCBHMHXFSG9ABJKXHB9ZZALWGEYLWFRULFFBOSBFXFNJJQYPHPHJ9ONQMKEDNUJTTHEZSEPE999',

signatureMessageFragment: 'SBEAKDXC9D9DEAGDTCBDSCEAMDCDIDEAVAXCEAUCCDFDEAYCIDGDHDEAQCTCRCPCIDGDTCEAXCEARCPCBDSASASASA999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999',

address: 'HELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDD',

value: 1,

obsoleteTag: 'LG9999999999999999999999999',

timestamp: 1529851449,

currentIndex: 0,

lastIndex: 3,

bundle: 'AIYWAEBHLFZYDYO9KULNOSRBCZSDYJVIYHTXCFVDEOGSRFJESGLEZVJXYOSYKJENFUVBOAZGHGJHYREBY',

trunkTransaction: 'HJLAJVBGJCCC9XRMLYOIJTPLBOELQMS9LMYGFYR9XDNWHUZYQDCZIQGNIFVXEMRBMCLEXVGKCXSUYV999',

branchTransaction: 'SAAGHDVRNZFGBUNKUCPAW9UYZKSZBKYEWVBTGGOQMPWTOPSMWIWIEQXHFGN9WLEIDUAVQB9E9ECO99999',

tag: 'LG9999999999999999999999999',

attachmentTimestamp: 1529851456551,

attachmentTimestampLowerBound: 0,

attachmentTimestampUpperBound: 3812798742493,

nonce: 'EMDIGCYYFVNXFJMWXPOMDWRUCCE' },

{ hash: 'HJLAJVBGJCCC9XRMLYOIJTPLBOELQMS9LMYGFYR9XDNWHUZYQDCZIQGNIFVXEMRBMCLEXVGKCXSUYV999',

signatureMessageFragment: 'XOFC99XBKNCJXFNLIHWBELHVHEWZPHYQ9PSMRNJKLUQE9KTPHDKPPZCDJ9IUTBANQIKFKQYREIKRBCVHYSBRAVOXZSZNOEBIBUEBDIIVYCHYXNWFALAFFZ9NCVZMIZDBRDQIHWJWSGIDCOGIX9XEBJLGJMGMLVVX9A9AMJDPENVBGFQUENEJUAEPJEKGTKVWVITGMWSDJZZSOBEEEXQLGMW9VGCYNYBCVHASOMNPFEEZ9RMFGBXNAXMESQLNVWTKYLTQBOKZZRWGDZMS9OWKJEVXNYJGXKLEHVHJQHLQKGJQBJRETKNPLQIHZLMGDAGPSEGWSYKLWKMWZXNZIDZISEYCDFTHDMTRMKY9X9FOAWNBKZNMVRMXZYVGHELCSENGSPZVVJVZLPPGCJWOBNEZDJPFYJXVDRGNOVAWHXQBAEGKENTDXVTNEGOVLKQXOCNQINCSYMVLEYRA9KZDGWUSOJLUYPHEAASGOZEXAWCNVFBGBAUSIXNKHITQWJSPLIMGUZEFNHHSBG99C9SKEMAYHRROWVFKBZTOUZFYBASHVQSXXIAJCBIKPRDGXSMZOIYCF9DNYCSSHWEXWHVAPRFLAFTJDDAHAHQIADDKEIARGR9VTK9FBNWLITPRQYQQKTAYHVFOXV9DVKLGZRNEKOOXDABDMYZRMXVTRTOHBDZZNFMGQOVIASMILNMTBYBHDUHCIFIHREI9GCEFAAFFSOLBTWFXZ9AMEOYFUREX9RBAWDBRJZLZVVBMHRZUJKQKNPT9LEEOLVVD9TLF9GVRDPYURGRVNDMRRDTVYCBDSBP9UBLBDHBZUAHUBUMSSBXSTKCBLXLKPDCAONYITBFECEMPXJVQRXNTBPKFOCFDMMGLNNERPX9BSVLWUN9PO9WOORMUEI9GLMUBERAFMND9VJIMDGAOAWUCQUTRDBEZKWLDJFXWBSEDQSDLPNJNDOTDFSUMVHMADSXMVZWCBPFASEOLOWYHUEIHWSEZ9RIKWEPCOQJZMZEECHKLTZCTUDMWOO9ALYKVYYVXQAQFZRCD9LGVAWUEJDF9ZPWUDJHQHEEVJGPESMIGEAWMRGS9OWTJHORIQJVSRNIKTJWIQRALGSKMXKGGKYJKPJGUQPMAVLHRLESZYDKUVQYRLWGR9LRNL9TUQWYEHDWGLJUBATGJRVHFLOKMZEYXIHAYJJMEMOQGCOFSPKYGVQPHSCMFCVDGSJXB9RIGXPCRONJWFZVJ9SHURDAGZHOWASTAHBUDZORPHMNFBVGYVEDRSWVVPKEJJTJAKVWVTXLRQYNNQO9WSLJSJLQNUNIJDN9YFJ9FAEAAECXXKEZEQFLZJLUAN9ESAIBNJFJDBQWONAFBMUJJBLJZLKTOS9GZZVFGXDTOQLYQVQPJ9XNCWAWAQATQZBEAZSTNN9YIYOEPMFQEKNKWYZJRLBBSQTQFVRWYWNGYVYSGQWCVYPFEOWMUZN9KJFQTKNIACQUVRCIGDXZ9YEYZDISDHCZGXPZWW9GHTNANGDZISFAYZKEY9TDCJNCWBBC9ARXOVTXNRGCH9HEU9T9XZQHULGAFPMWGNM9ORSLKSHRGTUCSUXCPIGIJLKYVARPQYTQXTXE9PSXTVDSLLDBLYGH9NB9CUSPAPL9PP9UDOYMOUKGGYHBKQGUPKPBUNSXDTVPSLGEPYAQKA99SIV9KJXMYHCOUPOSQHUKNTVDPDJBNWSKSURQCZRLZCVHBPKVNXVYMHZRWMPWTA9RQACNOSATNEMGKJWXITWZJJLLHUBN9ZMNDSMWOHG9ZECEPUSOZLVGMGPWJCJDKKTHTSONIUGISFHY99NGNAOYWQO9KOCHJDAWAGWP9TRASYYSQWDLTDIJMOVACUV9CUZYDNXSBNJGDYOVHAIJZMLKHFWHXRFRUTCWDJKYHYORLYSN9VRSTLJVWKWB9LANRDFYZZJKSFKF9IQFWPRJWDKGEJALFXLS9ISCSMVYLMXCVNLESVJAGXUBMOLXQZGPR9IACTCJROR9ANHKBHMJGOMTR9SFJYXOJWIMRISIEHSFAPTEXNOOJDOAVCCNMWLKQE9DDBZVFOXCBPYOV9CGNPRTAHXWQZ9MWVWTERZ9ZKTOEXLAPPWBDQVTBIKTXRKWK9FRDEYXLHUKKIP9TEMJFZ9PG9GXUUNALJQJQNSLOSG9BLPMF9RLXCCCOPCBKAZO9GYW',

address: 'FBTICMZPRTLDFYZZSMBABZTBULMWZVRKZPXTFJEIOPUJLFQDIOPWHKCXKIBPYBGXBSHZIBRYUBMYCRGHA',

value: -1000,

obsoleteTag: '999999999999999999999999999',

timestamp: 1529851453,

currentIndex: 1,

lastIndex: 3,

bundle: 'AIYWAEBHLFZYDYO9KULNOSRBCZSDYJVIYHTXCFVDEOGSRFJESGLEZVJXYOSYKJENFUVBOAZGHGJHYREBY',

trunkTransaction: 'GKNBKDZM9XOEEDYWHLFLYGTW9YCEWQFZGC9FWRTRRLIBIBADFSITNOZAQBWKG9OTTJOKGNSQLJHVMZ999',

branchTransaction: 'SAAGHDVRNZFGBUNKUCPAW9UYZKSZBKYEWVBTGGOQMPWTOPSMWIWIEQXHFGN9WLEIDUAVQB9E9ECO99999',

tag: '999999999999999999999999999',

attachmentTimestamp: 1529851456539,

attachmentTimestampLowerBound: 0,

attachmentTimestampUpperBound: 3812798742493,

nonce: 'SFDLLPLZQ9GVBGPFHKVBCHPZ9W9' },

{ hash: 'GKNBKDZM9XOEEDYWHLFLYGTW9YCEWQFZGC9FWRTRRLIBIBADFSITNOZAQBWKG9OTTJOKGNSQLJHVMZ999',

signatureMessageFragment: 'DMYOLFZUNASYKIVELBBALIJWLITJTTAHPAGKCHMQNGWENOYWESBIMLRMKEHRCWWZCREVIYKTCDWBZYVKXZKXLZUCIAE9KNZMISVDLHEVSMKCAVUJ9ABTM9TQZXKPMRNRL9WLHPMHCFBPBHDPEQ9RANDVPAWPPFIWOYJAETGDCTYDSLDBYTB9BAS9GDPBWRHLQNGLJFFOJGJPFYNGFDAJVKVMVZXQSL9XCWUVZMKYIRKGQBBCQUWZNDWGBIMYHHIU9DMLH9STGQLGSANRYDOAAHLVLUBHEWOS9YDANVSIIXNCADJMWEZLDYNZLHTQ9CSBPZWWUBKGZIARYOHUHKKOEALUDJTBMZAWYMLSCBIASZUFHBRDLDCSSMAANAGNKUFEMYQLJCZDJQXHZGDTRKETCVJF9UACUZPUNBCZPGRPMUEVPNCUAMTTGWTAC9MXPSMESRFFRYOBOU9IXOLJCXHGOHUHLKIEDRJIXSFFSXAWGAZ9Z9HAKVXWMNMPAWOUALDOSGNHCPBSAGLWSBLSMJDFZJOMPQDWNJXXROJQYWYQAPMTZYDVCKBOFI9UMAZUCBUAOYRYCKPZZTNIVC9QLHZRLWYAMIUMSUIZQZUBQRVZQXBWC9QNDUIUGV9YEZRJXKJSJNOB9NGZLFDEOJ9WGOC9N9CNJBSHCPXNCGNMUPWUWSVD9CNFTHKCRIIBXYVIPQSIYYGCXZOHWCWNUJXXUMNSXTGE9NSXTIHAHNWAPIVE9BDELWOTLLJHAACOEBCWMNQPQD9W9BNQFETNRCZPMUGUSIVSXJTONUUAUYHNAYHDVX9SJMPOUDG9FLZ9RUPFXROSQCLDWSUKCHHNZPKGPPZTMDDOKMP9QESVLTDMUNFGCRARGYIJAREEFOCUNT9ISAVMLRUACRMETNRXRK9OQALVETPSOCBWZRTMJCTEHQQ9OYTQUMEN9NGDHOGPXAP9DFTACICAPFUYEZNXQOKDBUDYRLNIFFDKKCWAHQBJLJ9ZRJXWZD99DLOCEVOPXP9QIKJRVCVVDHSOKEDTRUMPETUHIFIRAESLBR9CYCRTQHWHC9GIMJQ9NMSAGBFHWFKWUDLJLWUPVKYOSLEEWLFBPMEMBLEEYLYMYQUYZUYNCRRDITMFGBRCTGWCPWDNDAFXXAEYKDDBYVQHNCFWCOLWCGUOESFRBFQVPYKQ9TLAUFTEASHGLWORCFJZZBXIMVFVVHDJJCAHQWKMMWDNHDVCZXSLBMPXSPTZIZPNZCSDEHXNFAOY9HOWCUXEEKRSI9DUGOGYEUPSXTLT9WILQENYDOKKAMELMESWOUNBCFFBOGEZXKCGZZSPFCARQRNFBXOPAJQIISJLJSSKLJLWDAYIUWNSAJQEAYQOTW9ADV9TUHULTQHAYBOFEADTAFPHBSCESQDON9I99JFALZMOARKQYTNICNJKDLWZXORODSKJOZZFLSYGFXIMOZRXDUHPOCSTPNW9VBMSSKJQXMLQIXHSYJITC9ISEBSCUWKO99BQQUTPDMIEKGUVXIIHBOVQLGGHSDVBYDDEBCWBRYGNARRFYSWK9EEKLRIICHKFNSCRASANBIAHXDMVPPWMWXXNWLQZIPBEDYRDOHIGH9DZYIEPQTLZCRENBRXPZWEAXQHIEJTKHKXBLEBCOV9RLWRSUSPYIWINYDDTWWJXRERDTYPVEEXSUZWOGCO9IEDCZIWRBLNEPLWSPZNEMGTEYQLVKKJYMQDMSPHUFLUWBZZDMPXXLHNZH9ZGFZUXJXQWJYNXKJSSMHUNEQLFAVUNRXOJRRHGRBMZUSURCJERGEIRVZLUJVUURGXYAYQHSOCNPSSCHXNJGRRAKRMO9DZVHDKYORNZXWQVBQWXATDMWJDVBEP9COVCGJRTQLMXEXYBOKPVXUYUIWLKA9CWFFSFHXQXNXCJKGXGFYHTJFIAIMMLBY9OHUZAYXCCSSUQBL9PRXUCBQMQWDAJHFPWMG9UQNZAWEMKCUMSHIXXHRFCASPIPBW9HVPVNPSIJ9QJXKIRGKYQWLYEDHOZNEYUAJACHEX9MDWKDZJPDDSIGAFALGBPQYHSMDBVGSUUMHXFBDVDRSOMINLGMETXWQBVJVKBWPZEHWRFCU9MYMDAWAOHRQXIZFAMYOXO99MSTEOQSEBPNNMBFWKGLHWVLGIBIL9O9EVTJRLWBDQHQQCVIEYUZ9D',

address: 'FBTICMZPRTLDFYZZSMBABZTBULMWZVRKZPXTFJEIOPUJLFQDIOPWHKCXKIBPYBGXBSHZIBRYUBMYCRGHA',

value: 0,

obsoleteTag: '999999999999999999999999999',

timestamp: 1529851453,

currentIndex: 2,

lastIndex: 3,

bundle: 'AIYWAEBHLFZYDYO9KULNOSRBCZSDYJVIYHTXCFVDEOGSRFJESGLEZVJXYOSYKJENFUVBOAZGHGJHYREBY',

trunkTransaction: 'VMJL9UVXBAPERHWIVGOMPNEHJBCTL9ABSGSMEKXCHNUW9NRAFSIVCKJFWXUDBFOMNQJHQEWZPPDRRG999',

branchTransaction: 'SAAGHDVRNZFGBUNKUCPAW9UYZKSZBKYEWVBTGGOQMPWTOPSMWIWIEQXHFGN9WLEIDUAVQB9E9ECO99999',

tag: '999999999999999999999999999',

attachmentTimestamp: 1529851456532,

attachmentTimestampLowerBound: 0,

attachmentTimestampUpperBound: 3812798742493,

nonce: 'DFLBUPZRIRIBODBQ9RKGIEANSBH' },

{ hash: 'VMJL9UVXBAPERHWIVGOMPNEHJBCTL9ABSGSMEKXCHNUW9NRAFSIVCKJFWXUDBFOMNQJHQEWZPPDRRG999',

signatureMessageFragment: '999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999',

address: 'QWQLOWHRQCBFJTNVPKMHBISERXKEIFAQQIEFURQPQOXUMMXQIAHBYTT9LWEILYCTROE9FMCDZPFAZDGNZ',

value: 999,

obsoleteTag: '999999999999999999999999999',

timestamp: 1529851455,

currentIndex: 3,

lastIndex: 3,

bundle: 'AIYWAEBHLFZYDYO9KULNOSRBCZSDYJVIYHTXCFVDEOGSRFJESGLEZVJXYOSYKJENFUVBOAZGHGJHYREBY',

trunkTransaction: 'SAAGHDVRNZFGBUNKUCPAW9UYZKSZBKYEWVBTGGOQMPWTOPSMWIWIEQXHFGN9WLEIDUAVQB9E9ECO99999',

branchTransaction: 'SAAGHDVRNZFGBUNKUCPAW9UYZKSZBKYEWVBTGGOQMPWTOPSMWIWIEQXHFGN9WLEIDUAVQB9E9ECO99999',

tag: '999999999999999999999999999',

attachmentTimestamp: 1529851456523,

attachmentTimestampLowerBound: 0,

attachmentTimestampUpperBound: 3812798742493,

nonce: 'OIFJOUHQAYDBO9ZGCHATJUZ9CQM' } ]

Lets first make sure the one 1i is deducted from our Address, by executing our showBalances.js

Looks fine. Next we can use the tangle explorer to check whether our 1i has been received by this Address.

Congratulation! You have now

your address with 1000 devnet IOTAs.

You have executed a token transaction and

you know now how to retrieve transaction information.

Most importantly you know what could happen when you expose your seed.

In the next article I would like to show you what happened in the background when we transferred our 1i to the “HELLOWORLD…” address. I would like to explore a little more on the possible commands from the iota.lib.js repository and motivate some use cases.

Please get back to me if you struggle, have recommendation or just like to change something.

Cheers,

Jan