Hopper Update: May 2019

May 16th, 2019

Since January's hopper update, I managed to get Cuntoo working for me and released the vpatch for auctionbot. Next up:

cl-wwwism kit - There's definitely a need for some basic www interfacing tools to be genesis-ed, and to be frank I'm not sure atm what the 'final kit' might look like exactly. However, this may not be a problem right now because the v-approach to things seems to be a piecemeal approach; building yggdrasil as it were. In any case, spyked has outlined for us some basic elements for such a kit:

  • http server
  • curl
  • html gen
  • So I decided to attack the http server piece and am currently chewing through the mod_lisp coad,1 and once it fits in my head I will poop out a genesis.

    logotronics - This item depends on some of the www interfacing items mentioned above, namely: the html generator and http server. However, it'll also require some Postgres interfacing to retrieve loglines from the log table that logbot uses. Once everything exists I will spin up a few auxiliary logotrons for channels like #pizarro and #trilema (or any others on request), as well as look into Mr. P's request re:

    mp_en_viaje: lobbes, can you do that ? make your logger 1) log ~every irc channel over 50 users~, 2) produce this data upon request by a lord only, and for pay ?

    other items - Once the above items start taking more shape, I aim to circle back to the remaining items in http://blog.lobbesblog.com/2018/11/conveyor-outlook-now-to-feb-2019/

    1. Which is taking me time since I know not C nor really Common Lisp yet, so it is currently a 'line-by-line with the respective reference manuals in-hand' exercise. []

    Auctionbot: vpatch and manifest

    April 26th, 2019

    patch: logbot_command_router_python_auction.vpatch

    signers: lobbes

    This vpatch extends logbot command router to add auction functionality and builds upon the Keccak regrind of the botworks V tree. As I understand it, here is what that tree looks like today with the addition of this vpatch:

    botworks-v-tree-2019-04-27.svg

    Press logbot_command_router_python_auction via your preferred V:

    mkdir botworks; cd botworks; mkdir .wot

    #You'll need the keys for both lobbes and spyked in .wot

    vk.pl init http://lobbesblog.com/src/botworks/

    vk.pl p v logbot_command_router_python_auction logbot_command_router_python_auction.vpatch

    From the INSTALL:

    ========

    INSTALL:

    After pressing and assuming you have already configured the command router (see the parent README), all you need to do is run the auctionbot.sql against the postgres database used by the command router. This will create all of the auction tables (they all will be prepended with "auct_"). From there, just start up the command router (i.e. ./main.py) and all of the auction commands should function (creating auctions, bidding, etc.)

    example:

    su postgres -c 'psql -f auctionbot.sql postgres'

    ========

    IMPORTANT NOTE:

    This bot does not have a SCHEDULER baked in (for e.g. listing auctions out in a channel every X hours). This was intentional, as I wanted to leave that portion up to the operator.

    Nevertheless, it is CRUCIAL you schedule a recurring call of at least the 'resolve' command, as this will ensure all of the auctions are properly resolved and closed as they expire. I recommend calling this once every minute.

    How I have personally handled this is I have a few cron jobs that run INSERT statements against the postgres database every X interval. Examples below.

    -Example SQL to essentially call the 'list' command 'from' #lobbestest:

    INSERT INTO log(target, message, source) VALUES ('#lobbestest','?Xlist','auct_cron');

    What this does is insert a record into the log table used by the parent logbot. The command router sees this as the command 'list' coming from '#lobbestest' issued by the nick 'auct_cron', and responds by listing in that channel.

    Some may see this as 'tainting' the log table with 'false' loglines, but if you are thoughtful about it you can make it so those records can be easily filtered out of, say, a logotron's display (a 'reporting' database ought to be separate from a 'production' database anyways, imho).

    -Then I simply add these 'one-liner' sql scripts to run on a cron job. Here's one of my crontabs, for example:

    * * * * * su postgres -c 'psql -f /home/lobbes/auctionbot/auct_schedule_cmd_resolve.sql postgres'

    0 * * * * su postgres -c 'psql -f /home/lobbes/auctionbot/auct_schedule_cmd_list_lobbestest.sql postgres'

    0 */5 * * * su postgres -c 'psql -f /home/lobbes/auctionbot/auct_schedule_cmd_list_eulora.sql postgres'

    0 */5 * * * su postgres -c 'psql -f /home/lobbes/auctionbot/auct_schedule_cmd_list_pizarro.sql postgres'

    0 */5 * * * su postgres -c 'psql -f /home/lobbes/auctionbot/auct_schedule_cmd_list_trilema-lobbes.sql postgres'

    From the manifest:

    424545 ircbot-genesis trinque ircbot genesis, http://trinque.org/2016/08/10/ircbot-genesis/
    424689 logbot-genesis trinque logbot genesis, http://trinque.org/2016/08/11/logbot-genesis/
    447104 ircbot-logbot-multiple-channels-corrected ben_bulpes multiple channel support for ircbot and logbot, http://cascadianhacker.com/correction-multiple-channel-patches-for-irclogbot
    539566 logbot_command_router_python_genesis lobbes logbot command router for python, http://blog.lobbesblog.com/2018/09/logbot_command_router_python-genesis/
    573368 logbot_command_router_python_auction lobbes auction commands for logbot command router, http://blog.lobbesblog.com/2019/04/auctionbot-vpatch-and-manifest/

    Signature for spyked's Keccak regrind of logbot_command_router_python_genesis

    April 2nd, 2019

    I have read and tested spyked's Keccak regrind of logbot_command_router_python_genesis.

    Below is my signature for the Keccak version of logbot_command_router_python_genesis.vpatch


    -----BEGIN PGP SIGNATURE-----

    iQIcBAABAgAGBQJco7lpAAoJEDHzbSmk2TZSk1MQAOZaEucFuQR9AW4iTeLkq+gC

    i1yu3KrLRcmOoT6fO3l2/HILX3kuQLNqN3y/dvpljGBcGgizUbUvnn4v93Sf4HK9

    Z+qVdKpkQIXiWKfbyk/SLdbIFKIk8iLSasUxO94vfxtYMA/F7jy1c9Xf1iuPb+nj

    JOwwDjMR+CJ6FvoQ6njdMOv3hl1zSHltQKi8eH+pg7N0t+vaDWVeC5gK/FRGbqPK

    c96eHamEas0/iIsUYtHEeRwBmLCD23qgVeOTwhYtu5yt2bQcGUXyjKpJ1vwkq11q

    q2nDLh0et2Y+SEkv11sStBWwoLSrMvDSLwi/mn5Y2GzSlxv8ryn8c6B1X+KNDAHZ

    +oxqx5Z3ZfckQg4sPN7jW1r6us11EWJM53iEZK7jgBOF8ib0N3aP2XmNDdFdDC8t

    An4Dd2A9HPMLCJcuPbgFCoZamWa32rlpC+Ujjc7G4dpAVIYIdlKVis088M1L2g+S

    aup0TnSkEy2a7o99eY+kOGsIiN+5wju0ij8M9gBid87I6Qjt3KHAK+t7SX4bMMfy

    21X9G6enll+1d/ZYFCQV+I8lOj1Wx3qVYBBR1g1dAprBatkPA2slJl96K80udHMc

    F6EELt78FGOb7QGNplmQKrMIqMd0dl2Yo8ha4UVgX43oyFtPL56hcL83GH3KIApZ

    aZ6z/YGUluB33NApJTtq

    =ddyK

    -----END PGP SIGNATURE-----

    A bridge to Cuntoo: for the Lenovo x61 (x86_64)

    February 25th, 2019

    For additional Cuntoo baking documentation, see:

    http://thewhet.net/2019/02/hanbots-cuntoo-bake-test-notes-part-ii/

    http://blog.mod6.net/2019/02/a-cuntoo-adventure/

    http://btcinfo.sdf.org/blog/cuntoo-a-linux-that-sucks-less.html


    The following is my collected notes on my journey to a bootable Cuntoo usb drive for use with the Lenovo x61. This was a 'clean slate' restart from my previous (failed) attempt, as this time around I installed a heathen, hand-rolled Gentoo on the Lenovo first, then used the Lenovo to install Cuntoo to a usb drive, then booted the Lenovo from the usb drive.

    Before I get into the details, here's the vpatch produced and kernel config1 used:

    genesis.vpatch (trinque's keccak sig, for convenience)

    4.14.83-lenovo-x61.config

    Note: Sig verified for me after making the recommended change to line 14 of scripts/make_portage_tree.sh

    Step 0: For the love of Christ, remember to use Screen. (or at least some kind of sane logging)

    On my first run-through, I had the great gall to forgo typing "screen -L" before starting my adventures. While perhaps obvious to most, it is something that no one ever wished they didn't do.

    Step 1: Install the heathen Gentoo

    I used a Gentoo "LiveUSB"2 and a recent stage3 tarball3 from https://www.gentoo.org/downloads/, then proceeded to follow the Gentoo handbook:

    https://wiki.gentoo.org/wiki/Handbook:AMD64

    This was my first successful Gentoo install, so it took me about 2 weeks of reading that handbook4 and troubleshooting various woes, but eventually I got it. For the more seasoned Gentoo-ists in the audience, this will probably be the easier part.

    Step 2: Get your Republican toolbox in order (on the Gentoo bridge):

    Make sure you have the proper gcc and gnupg versions

    I had applied asciilifeform's battle-tested crapolade masks to  /etc/portage/package.mask, but I must've forgotten something because after Gentoo installed I found that I still needed to roll my gcc and gpg versions back.

    First, I had to set a  /etc/portage/package.unmask on:

    =sys-devel/gcc-4.9.4

    Then emerged gcc:

    emerge -a =gcc-4.9.4

    This took roughly 2 hours or so, afterwards:

    gcc-config 1

    env-update

    Apparently, the portage I ended up with5 required at least gnupg 2.2.4, so I had to roll my portage back to 2.3.8 so it'd play nice with gnupg-1.4.21:

    emerge -a =sys-apps/portage-2.3.8

    emerge -a =app-crypt/gnupg-1.4.21

    Install musl

    This was pretty straightforward, and most of what I needed was in the faq https://www.musl-libc.org/faq.html. For reference, the release I used was https://www.musl-libc.org/releases/musl-1.1.21.tar.gz. From the horse's mouth:

    How do I build musl?

    In short, simply run ./configure and make. By default make install installs to /usr/local/musl. You may override this by passing --prefix to configure...

    ...For further details, see the INSTALL file provided with the source distribution.

    Note: after installing, remember to add it to your PATH, e.g.:

    export PATH=$PATH:/usr/local/musl/bin

    You can test that you added it by issuing something like the following:

    musl-gcc -v

    Install Adacore GNAT 2016

    In order to build ave1's GNAT later, you need Adacore GNAT 2016 first.

    Head to https://www.adacore.com/download/more, filter on "x86 GNU Linux (64 bits)" and for the year choose "2016". Grab the tar, and the README.txt. Read and follow the latter.

    README.txt

    SHA-1: 18da74a0ac9df2753bfd9b3d2dcad6e3379825c2

    gnat-gpl-2016-x86_64-linux-bin.tar.gz

    SHA-1: 845147a8c6ef6af29a68144d6b3d228fd226268e

    Like with the musl install, remember to add the directory gnat was installed in6 to your PATH. Issue something like "gnatmake -v" to verify

    Build ave1's GNAT:

    Head to http://ave1.org/2018/building-gnat-on-musl-no-more-usrincludex86_64-linux-gnu/ and follow the excellent README.

    Note: As always.. PATH! However, this time, make sure your heathen GNAT is no longer in your path and ave1's is.

    Get a V setup going that calls out to phf's vtools:

    You will need a V that uses phf's keccak-ized vtools. hanbot covers this topic pretty thoroughly in her notes (linked at the top), so I won't rehash too much.

    For me, I ended up going with diana_coman's setup outlined in http://ossasepia.com/2018/11/13/v-with-vtools-keccak-hashes-and-its-own-tree/, and it is working splendidly.

    Step 3: Cuntoo

    This is amply documented at this point, both on trinque.org and the other guides, so I see no need for a step-by-step.

    However, I did hit the following rock using my initial kernel config. The following spew erupted in the middle of building the kernel7:

    error reading elf file init/calibrate.o

    make[1]: *** [scripts/Makefile.build:294: init/calibrate.o] Error 1

    make[1]: *** Waiting for unfinished jobs....

    GEN     usr/initramfs_data.cpio.gz

    AS      usr/initramfs_data.o

    elf_getdata: No error information

    error reading elf file usr/initramfs_data.o

    .... [and so on for a dozen or so more files] ...

    Now, I have not confirmed 100% this was what my issue actually was, but I ran across the following bug report in the wild that described symptoms that were similar to mine: http://lkml.iu.edu/hypermail/linux/kernel/1508.1/02478.html

    Apparently there's a kernel option called CONFIG_STACK_VALIDATION that does some checks at compile time, analyzing all the .o files and validating the metadata. It is also supposed to be disabled by default, but I somehow managed to enable it. And according to the bug report:

    These are caused by circular dependencies. The %.o pattern rules in
    scripts/Makefile.build have the stackvalidate binary listed as a
    dependency. But stackvalidate gets built *after* archprepare and
    scripts/mod, both of which build objects using the %.o pattern rules.

    So, it looks like scripts/Makefile.build tries to look for stackvalidate before it is built, causing some barf.

    Anyways, disabling CONFIG_STACK_VALIDATION by setting it to "blank" did the trick for me8. Kernel built without issue.

    ...and that was it! After my kernel config woes were out of the way, the rest went smoothly. The Lenovo booted into Cuntoo from the usb stick and I was able to login with the user/pass I had set.

    1. generated via 'make menuconfig' []
    2. install-amd64-minimal-20190115T214502Z.iso []
    3. specifically: stage3-amd64-20190122T214501Z.tar.xz []
    4. indeed, I made sure it was word by fucking word []
    5. 2.3.51-r1 []
    6. for me, this was '/usr/gnat/bin' []
    7. If you're using the handy "bootstrap.sh", the lower-level "enter_chroot.sh" contains the call to "make all'" []
    8. i.e. "CONFIG_STACK_VALIDATION=" []

    Anglotardation in an Object Oriented World

    February 23rd, 2019

    While slowly working through my very rough draft of Why TMSR and mulling over what loglines to include, the following jumped into my head (thankfully, I found it):

    mircea_popescu: there's nothing BEYOND the world. the things claimed to be so are always and without exception ~inferior~ not superior in the tree of things. one's fantasies of self-realisation, be they wet dreams about little miss rottencrotch two chairs down in chem class or "the rapture", are just so much teenage wank.

    god is ~just another trope~. like "the voyage", like "the teenage witch", like "vampires" or "magic horses" or "the island of buyan", god is just another trope. tropes are common places of fiction. fiction is a product of imagination. imagination is mildly-restrained psychogenic noise, which is a class of noise, like wetware thought or like fg output. which are phenomena, which is one half of the world (the other half being objects).

    The bolded bits, especially, are what stuck in my mind, and it makes sense to me: We exist in the world as objects (with other objects that don't necessarily belong to the "we" set), and the interaction between them is the phenomena. This simple classification put much into focus, and honestly I wish I heard that in kindergarten instead of the mandatory day of "lets sit in chairs and pretend we're flying to Disneyland" (literally, they did this)

    This logline of thought eventually led me back to my copy of "Kritik der reinen Vernunft" von Kant. I've been very slowly chewing through that thing, and each sentence probably takes me good 30 minutes to really grok because I cross-reference each translated word, trying to make sure I'm actually getting the correct meaning. The point being: It takes time, but at the end of it I can actually understand (I think) what the original author means.

    Now, up to this point I had prevented myself from even taking a glimpse at an English copy because I've read in the logs how often the English translations are shit. Just for kicks, I finally looked at the one tiny portion of the gutenberg English translation that I had also translated from the original. Let's compare!

    First, the original:

    I. Von dem Unterschiede der reinen und empirischen Erkenntnis

    Daß alle unsere Erkenntnis mit der Erfahrung anfange, daran ist gar kein Zweifel;

    denn wodurch sollte das Erkenntnisvermögen sonst zur Ausübung erweckt werden, geschähe es nicht durch Gegenstände,

    die unsere Sinne rühren und teils von selbst Vorstellungen bewirken,

    teils unsere Verstandestätigkeit in Bewegung bringen, diese zu vergleichen,

    sie zu verknüpfen oder zu trennen,

    und so den rohen Stoff sinnlicher Eindrücke zu einer Erkenntnis der Gegenstände zu verarbeiten,

    die Erfahrung heißt?

    Now, my attempt at translating to my mother tongue:

    I. Regarding the distinction between pure and empirical knowledge

    That all of human knowledge begins with experience, towards this there can be absolutely no doubt;

    because whereby should cognition be exercised,

    does it not occur through objects,

    which stir the senses and partly cause notions to naturally occur,

    partly setting our mind in motion,

    to compare and collate them,

    to join them or to separate,

    to process the raw material of carnal impressions into a knowledge of the objects,

    is this not what experience means?

    Okay, I'm sure it is clumsy. But I think I grok the author's original meaning, at least. We experience existence through our interaction with the objects around us. Classifying, smashing them together, poking and prodding. This in itself is experience.

    Now the gutenberg English translation:

    I. Of the difference between Pure and Empirical Knowledge

    That all our knowledge begins with experience there can be no doubt. For how is it possible that the faculty of cognition should be awakened into exercise otherwise than by means of objects which affect our senses, and partly of themselves produce representations, partly rouse our powers of understanding into activity, to compare to connect, or to separate these, and so to convert the raw material of our sensuous impressions into a knowledge of objects, which is called experience?

    Definitely moar wordy than mine. Pretty similar, I guess, but constructions like "faculty of cognition should be awakened into exercise otherwise than" really make me scratch my head. I think that if this was all I had, I'd have a hard time understanding wtf the original author was saying.

    Or perhaps I'm just not understanding the original! And that's why ESL is bad for your mental health. What a phenomenon!

    Hopper update: January 2019

    January 31st, 2019

    Since last updateI've been continuing to pay my technological debts, namely:

    • I managed to un-wedge my trb node1; as of today it is at block height 443238.
    • Spyked released a keccak regrind of the tmsr botworks patchset, which included a regrind of logbot_command_router_genesis. I wanted to review and sign, and so figured that this was a great opportunity to test Diana Coman's V setup. However, I had failed to understand that ave1's gnat was the standard, instead going with a heathen post-2017 gnat that ultimately failed to work with the existing VK.pl implementation of V. I resigned to waiting until I had a both a saner workstation, as well as a firmer grasp on the related gnat threads in the logs.
    • With want for a saner workstation, I did some initial Cuntoo testing and ended up with two bootable Cuntoo environments. However, for whatever reason I could not log in to either of 'em, and trinque brought up the important point that I should be working to have a more substantive understanding of what the scripts are in fact doing.
    • With want for a better understanding of trinque's bootstrap.sh, I decided to step through the Gentoo handbook in order to simply install my own hand-rolled Gentoo on my x61.2 I made a point to compare what I was doing with what trinque's script was doing, and after about a week or so I managed to finally get a Gentoo installed on my lappy. The experience left me with a much deeper understanding of the installation process in general, and I actually have quite a few ideas of things to troubleshoot re: my Cuntoo attempt.

    Up next:

    While I could dive back into troubleshooting my login woes with Cuntoo, I look around and realize that I now have two functioning (and chroot-able) Cuntoo environments, as well as my own hand-rolled Gentoo on my x61 (complete with, at least, asciilifeform's traditional crapolade masks). I also look and see the looming pile of items I need to get back to, and I feel confident that my workstation is in better condition to start chipping away.

    With that, the next item on my list is chiefly to get ave1's gnat set up, then Diana Coman's V setup set up, THEN finally read and sign Spyked's regrind. Afterwards, I'ma continue working through what's listed in http://blog.lobbesblog.com/2018/11/conveyor-outlook-now-to-feb-2019/.

    1. with aggression patch []
    2. Non-musl. I'm just talking -A- Gentoo, of any kind; I had failed my previous "Gentoo quest" sometime in 2016 []

    Initial Cuntoo Testing

    January 8th, 2019

    I recently grabbed an old Lenovo x611 from ebay with hopes of turning it into a proper republican workstation. As of writing this I am still working on primarily2 Debian boxen and have yet to fully complete a Gentoo install on my own iron. With my need for a sane os mounting, I figured this would be a great time to test out the latest result of Trinque's ongoing yak shaving known as Cuntoo.

    The following is the results of 3 separate runs of the bootsrapper.sh. The target block device for each run was a SanDisk 32gb usb flash drive, and the os running the script was Debian 8. My aim was to first create a bootable Cuntoo on the usb stick, boot the Lenovo from the stick, and then obliterate its hdd with Cuntoo.

    First Run - vpatch (keccak)

    For my first run I used the 4.9.95-apu2 kernel config included in the cuntoo.tar.  Script ran without issue (I let it run overnight and woke up to the final prompts), however it turns out that the x61 needed another kernel. Trying to boot from the first run usb stick would result in it hanging indefinitely at the "BIOS data check successful" messaging.

    cuntoo first run: loading stuck on 'BIOS data check successful'

    Second Run - vpatch (sha)

    After a little research I found a kernel config for the x61 (mirrored here). Script once again ran without problems, and this time it booted!

    However, after multiple tries of entering what I know was the root password I set, I still was met with the "Login Incorrect" message.

    cuntoo second and third runs: cannot login with either root or main user

    Frustrated, I began the usual3 dance of mounting the block device, chrooting in, diddling with passwd and/or the /etc/passwd , /etc/shadow file, etc. Sadly, while educative, none of my password futzing bore any fruit so I turned my eyes to other areas.

    One weird thing I noticed while poking and prodding was that some of my permissions looked a little off:

    -rws--x--x 1 root root 33104 Jan  6 09:39 bin/su

    At this point I was reluctant to burn too much more time identifying and enumerating screwy permissions. I decided to throw in the towel on the second run and rerun on my third usb flash drive, just for good measure.

    Third Run vpatch (sha)

    Third run had results identical to the second run. Meh.

    So my original aims did not quite pan out, but what frustrates me more is that I'm not sure why just yet. Was it Debian strange? Perhaps just some elementary config I missed? Not sure at the moment, but on the positive side I learned a good chunk in the process4. I also have retained the Cuntoos installed on my second and third runs, so further prodding can continue down the road at least.

    For now I may just try installing a Gentoo on the x61 with the hope that it teaches me a few more things I can use in later tests, as well as giving me an actual Gentoo to test from in order to rule out debianstrange. Anyways, I look forward to more Cuntoo testing in the future and perhaps a saner workstation.

    1. sadly, I couldn't find any of the 64bit x60s in working order []
    2. save for my spiffy Pizarro Rockchip []
    3. Well, usual to others versed in linux, I suppose. To me it was a very enlightening experience of just how damned easy it is to pop an os once you have physical access! []
    4. For e.g. after all of my troubleshooting I'm now quite comfortable with chroot! []

    Conveyor Outlook: Now to Feb 2019

    November 12th, 2018

    For both my own sanity and for continued communication re: what I'm working on, I will outline what I aim to accomplish by the end of February 2019:

    1. Introduce auto-bid functionality into auctionbot. As of now, lobbesbot is the only bot with auto-bid capabilities and, imho, I did not design nor implement that functionality correctly to begin with1 and need to redo it properly.
    2. Discontinue legacy !Qauction functionality in lobbesbot.
    3. Migrate all legacy auction data2 from lobbesbot into auctionbot
    4. Implement the old-but-improved billing3

    Items most-likely on conveyor for after March 2019:

    • A more automated price history for auctions and a "ticker" functionality for auctionbot
    • Redo of the remainder of lobbesbot functionality to also sit atop logbot
    • Auxiliary logotrons for #pizarro y #eulora
    1. some related mini-threads: http://logs.minigame.biz/2018-07-16.log.html#t18:58:48http://logs.minigame.biz/2018-07-18.log.html#t18:04:10 []
    2. For the curious: 366 auctions dating back to Feb 2017 []
    3. I'ma need to retool the automated back-end bits to work with the new auctionbot database. Also need to think through how I want to report usage now that I'm only billing at a certain threshold []

    Bulletin on auctionbot fees

    November 4th, 2018

    Some of the following may or may not be news to everyone. Nevertheless, I figure this deserves a proper post. Going forward auctionbot fees will be handled as such:

    • 20 ecu (2 satoshi) per auction hour charged to the creator of that auction1 for auctions ending with a sale
    • 100 ecu (10 satoshi) per auction hour charged to the creator of that auction for auctions ending without sale
    • Quarterly usage will still be published and deeded as before, however the creator of the auction will not receive an invoice until the amount of unpaid fees hits a threshold of 1mn ecu (0.001 BTC).2

    Why have fees again?

    For those that may not be aware, auctionbot fees originated as a way to discourage spam in #eulora:

    mircea_popescu lobbes and by the way i'm all for your monetizing this. charge people 200 ecu / hour for successful auctions and 1k ecu/hour for auctions that end with no bids to cover for the cost of spamming the channel, and you can keep teh proceeds.

    In other words, since the bot lists all active auctions in-channel every X hours, the fees exist to prevent large masses of 'junk' auctions from cluttering the logs.

    Why are the fees at the rate they are today?

    In late 2017 the ecu floated to 1 ecu = 0.1 satoshi3. After some discussion in the logs the auctionbot fees were lowered to the 20ecu/100ecu per hour rate stated at the top of this post.

    I will continue to keep the fees relatively low.

    Why is there a threshold of 0.001 BTC before collecting?

    I've learned in the last year that running around each quarter and billing/collecting on what were sometimes very small sums4 was a tax on my time.

    Perhaps more importantly, I do not want to discourage usage of the bot now that it has been seeing broader usage across the Republic. I believe a bill-at-threshold approach still serves the original purpose of discouraging spam, while at the same time not discouraging usage.

    Of course, I will always welcome discussion on the matter.

    1. buy or sell []
    2. To put in perspective: assuming all your auctions ended in a sale, you would need to run 50,000 hours worth of auctions to see a bill. This means for users that only create, say, twelve 120-hour auctions per year, assuming they all ended in a sale it would take them ~34 years to see a bill (This, of course, assuming that fees remain unchanged.) []
    3. yes, 0.000000001 BTC, or a tenth of a satoshi []
    4. we're talking figures like 0.0000004 BTC []

    auctionbot is live

    October 14th, 2018

    I'm pleased to report that auctionbot is now live and sitting in #trilema, #eulora, #pizarro, and #trilema-lobbes. Here's a quick run-down on usage:

    Call command: !X1

    Commands:

    !Xsell opening(ecu) duration(hours as integer) item/lot

    Create an auction/order selling item/lot opening at opening(ecu), running for duration(hours as integer) hours

    e.g. !Xsell 3.5mn 72 One bag of entropy

    This creates a typical auction, and functions the same as the classic !Qauction from the old bot. The creator of the auction is selling some thing with potential buyers bidding the price up.

    !Xbuy opening(ecu) duration(hours as integer) item/lot

    Create an auction/order buying item/lot opening at opening(ecu), running for duration(hours as integer) hours

    e.g. !Xbuy 3.5mn 72 One bag of entropy

    This essentially creates a reverse auction. The creator of the auction is buying some thing with potential sellers bidding the price down.

    !Xbid order-number amount(ecu)

    Bid amount(ecu) on auction specified by order-number

    e.g. !Xbid 1004 1.5bn

    !Xcancel order-number

    Cancel an auction that you2 created specified by order-number

    e.g. !Xcancel 1003

    !Xview order-number

    View details on a past or current auction by order-number

    e.g. !Xview 1003

    !Xlist

    List all active auctions. Note: If there are no active auctions the bot will say nothing.

    !Xmybids

    List all active auctions for which you have made a bid. (Only accepted via PM)

    !Xhelp

    Returns the url for this page

    !Xping

    Ping the bot

    !Xautobid

    Coming3 soon...

    Assorted Likbez:

    All dealings are in ecu.

    Currently, 1 billion ecu = 1 btc

    How to read the output of !Xlist

    Take this output, for e.g.

    auctionbot B#1009 O=500mn LB=499.99mn E=2018-12-07 06:34:14.465343 (16h47) >>> 2k wFF
    auctionbot S#1010 O=1.08mn LB=1.13353mn E=2018-12-08 08:30:05.823023 (42h43) >>> 18096 NT q60
    auctionbot S#1011 O=1.05mn LB=None E=2018-12-08 09:25:26.658053 (43h39) >>> 29873 BN q43
    auctionbot --- end of auction list, 501.124mn total bids ---

    'B#' or 'S#' denotes if it is a buy or sell order, followed by the order number

    'O' is the opening bid, 'LB' denotes the current lead bid, and 'E' is the end date with the time remaining in hours/minutes

    Everything after the ">>>" is what is being sold.

    If you are unfamiliar with Euloran auctions, you may be thrown by cryptic combinations such as "BN q43" or "wFF". Note that while the bot will accept whatever strings entered for the item/lot when creating an order, nevertheless, conventions in usage emerge over time.  In the former case above, the "BN" denotes an item in the game, and the "q43" denotes the quality. In the latter case, the "wFF" stands for Wired Filthy Fiats, and has recently seen usage in Pizarro auctions.4

    1. case-sensitive []
    2. the irc nick issuing the !Xcancel []
    3. again []
    4. The ideal situation would be, of course, if I can eventually harness these conventions in order to automate price-charting. []