Bitcoin Forum
April 30, 2024, 12:51:38 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Hashmal - Transaction Script IDE (alpha)  (Read 9133 times)
Kefkius (OP)
Member
**
Offline Offline

Activity: 64
Merit: 20


View Profile
September 05, 2015, 06:11:48 PM
 #21

Getting closer to a real 0.2.0a release. I've written about and uploaded screenshots of tools on the Github Wiki.

There won't be a changelog until after 0.2.0a since so many things are changing. Here are some key recent changes:

  • Variables can be substituted into a transaction (see Variables tool documentation on Github wiki).
  • Variables can be saved to the config file.
  • Some stack log messages are now better (e.g. grammatically improved).

If you'd like to try Hashmal but don't know where you would start, check out the Example Scripts page.

Developer of FreeBitcoins.com Clamcoin faucet.
1714481498
Hero Member
*
Offline Offline

Posts: 1714481498

View Profile Personal Message (Offline)

Ignore
1714481498
Reply with quote  #2

1714481498
Report to moderator
1714481498
Hero Member
*
Offline Offline

Posts: 1714481498

View Profile Personal Message (Offline)

Ignore
1714481498
Reply with quote  #2

1714481498
Report to moderator
The grue lurks in the darkest places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light. No grue has ever been seen by the light of day, and few have survived its fearsome jaws to tell the tale.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714481498
Hero Member
*
Offline Offline

Posts: 1714481498

View Profile Personal Message (Offline)

Ignore
1714481498
Reply with quote  #2

1714481498
Report to moderator
Kefkius (OP)
Member
**
Offline Offline

Activity: 64
Merit: 20


View Profile
September 19, 2015, 01:02:14 PM
 #22

Alright, there's now a plugin system. I'm looking for ideas for plugins, so if you have any, please post them. Note that plugin basically refers to one or more tools in the form of dock widgets, which are detachable widgets. The purpose of plugins is to provide extra functionality when you have a certain requirement installed.

The proof-of-concept plugin that I'm working on is Pycoin, which provides a GUI for pycoin.

Also, there's a "chainparams" system that allows you to specify the format of transactions. For example, in Peercoin and its forks, transactions have a timestamp field after their version field. By selecting the Peercoin chainparams preset, you can deserialize Peercoin transactions, and even set the timestamp for a transaction in the Transaction Builder tool.

Anyway, ideas for useful plugins are welcome! Smiley

Developer of FreeBitcoins.com Clamcoin faucet.
benehsv
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
September 21, 2015, 11:22:52 PM
 #23

I am also getting an error on osx 10.10

Traceback (most recent call last):
  File "./hashmal", line 17, in <module>
    gui.main()
  File "/Users/bbuenz/Programmierung/CryptoWorkspace/hashmal/hashmal_lib/__init__.py", line 14, in main
    self.main_window = HashmalMain(self.app)
  File "/Users/bbuenz/Programmierung/CryptoWorkspace/hashmal/hashmal_lib/main_window.py", line 38, in __init__
    self.dock_handler.do_default_layout()
  File "/Users/bbuenz/Programmierung/CryptoWorkspace/hashmal/hashmal_lib/dock_handler.py", line 90, in do_default_layout
    self.dock_widgets['Variables'].setVisible(True)
KeyError: 'Variables'
Kefkius (OP)
Member
**
Offline Offline

Activity: 64
Merit: 20


View Profile
September 23, 2015, 05:57:26 PM
 #24

I am also getting an error on osx 10.10

Traceback (most recent call last):
  File "./hashmal", line 17, in <module>
    gui.main()
  File "/Users/bbuenz/Programmierung/CryptoWorkspace/hashmal/hashmal_lib/__init__.py", line 14, in main
    self.main_window = HashmalMain(self.app)
  File "/Users/bbuenz/Programmierung/CryptoWorkspace/hashmal/hashmal_lib/main_window.py", line 38, in __init__
    self.dock_handler.do_default_layout()
  File "/Users/bbuenz/Programmierung/CryptoWorkspace/hashmal/hashmal_lib/dock_handler.py", line 90, in do_default_layout
    self.dock_widgets['Variables'].setVisible(True)
KeyError: 'Variables'

Did you run setup.py?

Developer of FreeBitcoins.com Clamcoin faucet.
Kefkius (OP)
Member
**
Offline Offline

Activity: 64
Merit: 20


View Profile
December 29, 2015, 04:10:22 PM
Last edit: December 29, 2015, 05:35:09 PM by Kefkius
 #25

Alright, so I've done a lot on Hashmal since I last posted here. It really grew from a "Transaction Script IDE" to a full-fledged toolbox for cryptocurrency development. You can deserialize transactions/blocks, encode/decode addresses, etc. There's an entire plugin system. I've tried to keep the Github Wiki up-to-date with the all the plugins that Hashmal comes with.

Here's a short list of what the new plugins that Hashmal includes do:
  • Deserialize transactions/blocks
  • Encode/Decode addresses
  • Retrieve blockchain data from block explorers or via RPC
  • Create transactions from scratch

I'm currently working on a large refactor of the Stack Evaluator. Here is how it looks now (apologies for the big image):



The issue I'm currently dealing with is displaying the contents of an inner script (as in Pay-To-Script-Hash scriptSigs) in human-readable form. When I have issues like that solved, I'll merge it into the master branch.

--
edit: For your viewing pleasure, here are a couple of examples with the latest changes:

7 7 7:



string literal:


Developer of FreeBitcoins.com Clamcoin faucet.
JackH
Sr. Member
****
Offline Offline

Activity: 381
Merit: 255


View Profile
December 30, 2015, 10:47:23 AM
 #26

There is a similar tool written in Javascript for Forth here: http://skilldrick.github.io/easyforth/

What would be interesting you implement is a mock miner that can be configured. This way we can test the more exotic op_codes and understand how they would behave from a inclusion point of view in the blocks. Do you have support for BIP65 already?

<helo> funny that this proposal grows the maximum block size to 8GB, and is seen as a compromise
<helo> oh, you don't like a 20x increase? well how about 8192x increase?
<JackH> lmao
Kefkius (OP)
Member
**
Offline Offline

Activity: 64
Merit: 20


View Profile
December 31, 2015, 03:17:37 AM
 #27

There is a similar tool written in Javascript for Forth here: http://skilldrick.github.io/easyforth/

What would be interesting you implement is a mock miner that can be configured. This way we can test the more exotic op_codes and understand how they would behave from a inclusion point of view in the blocks. Do you have support for BIP65 already?

Seems pretty cool. About the mock miner: That could potentially be a useful plugin. I'm not sure exactly what you mean by an "inclusion point of view" though.

BIP65 support isn't implemented. I've been putting it off in hopes that somebody else would implement it in python-bitcoinlib. Tongue But the underlying script evaluation API in python-bitcoinlib will take some changes to support including block height and/or block time in the evaluation, so I guess other people have the same idea that I do. Ultimately I'll implement it regardless, since I need to put in a way to override opcode behavior based on what chainparams are active. For example, a blockchain like CLAMS uses a different CHECKLOCKTIMEVERIFY implementation than Bitcoin does.

Developer of FreeBitcoins.com Clamcoin faucet.
JackH
Sr. Member
****
Offline Offline

Activity: 381
Merit: 255


View Profile
December 31, 2015, 02:24:07 PM
 #28

By inclusion I just ment on how the entire path from op_code creation to block inclusion by a miner would look. But I guess there also needs to be a limit to how much you can keep expanding it, without ending up with a full copy of Bitcoin Smiley

<helo> funny that this proposal grows the maximum block size to 8GB, and is seen as a compromise
<helo> oh, you don't like a 20x increase? well how about 8192x increase?
<JackH> lmao
Kefkius (OP)
Member
**
Offline Offline

Activity: 64
Merit: 20


View Profile
January 06, 2016, 04:22:25 PM
 #29

By inclusion I just ment on how the entire path from op_code creation to block inclusion by a miner would look. But I guess there also needs to be a limit to how much you can keep expanding it, without ending up with a full copy of Bitcoin Smiley

Yeah, I see what you mean.

OP_CHECKLOCKTIMEVERIFY is implemented for the Clams blockchain in branch develop. It will take a little more effort to get it implemented for Bitcoin. The way I've implemented it is such that you can specify data about the block that a script is in via a new tab, "Block", of the Stack Evaluator. In the following screenshot, I've set "Block height" to 800000.


Developer of FreeBitcoins.com Clamcoin faucet.
Pages: « 1 [2]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!