1hyena / cryptograffiti Goto Github PK
View Code? Open in Web Editor NEWThe official CryptoGraffiti.info git repository.
Home Page: https://cryptograffiti.info
License: Other
The official CryptoGraffiti.info git repository.
Home Page: https://cryptograffiti.info
License: Other
The sfx
folder in src
currently contains *.wav
files used by the user interface. Create a data
folder in the repository's root folder and move the sfx
folder to there. Modify the file paths in the HTML file so that everything would remain working.
Now modify the compile.sh
so that it would URI encode the *.wav
files into the final minified index.html
it produces after compilation. After that, remove the unnecessary *.wav
files and the sfx
folder from the web server. After solving this issue cryptograffiti should truly become a one-file-program.
Portrait layout / mobile devices don't show all the necessary information under the tools tab because the minimum height of some elements is too small. Increase the minimum height so that the file list in the proof of existence tool is more visible.
Someone has encoded the original whitepaper of Bitcoin on the block chain. Since the Core development team and bitcoin.org has gone rogue trying to alter the original whitepaper of Satoshi Nakamoto to fit their central banker agenda it is important to make the true original easily available for the public. CryptoGraffiti.info should be capable of decoding this special TX that contains the Bitcoin's whitepaper.
Here is the TX that contains the whitepaper:
https://blockchain.info/tx/54e48e5f5c656b26c3bca14a8c95aa583d07ebe84dde3b7dd4a78f4e4186e713
Make it possible to attach an OP_RETURN message to your normal message. There should be a note warning the user that OP_RETURN messages can only be written using the SAVE TO BLOCK CHAIN
button and it will be lost when importing addresses to the wallet for manually saving the message.
Integrate the namebook implementation from https://github.com/1Hyena/namebook to cryptograffiti's toolset. make it available as an iframe.
Right now the font-family is just monospace
which has caused the ASCII and ANSI art become buggy. It should also contain "Courier New" to fix this issue.
Include and integrate some CashAddr conversion library (ideally a single javascript file) to the src/lib
folder. Make sure that when payment info is received the legacy (Base58) address provided by the server is converted to CashAddr format and added beside the legacy address so that the end-user could choose which one to use for making the payment. This should be done client-side without ANY external domain dependencies. See the attached screenshot.
Although @Erstus has already delivered better looking message boxes the general style of the website still needs to be improved. This includes buttons, background images and colour palette.
As seen from message #4077 it ends with a bunch of empty box symbols. This is a bug. The message ends with multiple null bytes and for some reason the interface has decided to display the null byte symbols while actually they should be omitted.
When saving a message on the block chain and prompted with payment details, present a QR code so that payment could be made more easily with mobile devices.
In write.js
at line 103 there is var text = unescape(encodeURIComponent(area.value));
which needs to be changed so that unescape would not be used. Instead, one should probably utilize utf8.js
as a workaround.
Interestingly, lib/cryptojs/core.js
also uses unescape
. Figure out what to do with this.
Apparently, goqr.me fails to provide their API over HTTPS. Very unprofessional. Their service should never be used over plain HTTP because in case of bitcoin addresses a man in the middle could replace the receiving address in the generated qr code and steal your bitcoins. Generate own QR code to fix this.
https://en.wikipedia.org/wiki/ANSI_escape_code
Implement ANSI ESC sequence number 7:
7 | reverse video | swap foreground and background colors
Using rem units for font-size cause chrome for android to render text totally unreadable(too small) unless font-size is fixed in root element(html) with precise pixels. "html{font-size:12px}" would be fine, but removes the support for user-specified font size. Problem most-likely has to do with smart-phone high pixel density being compensated in a weird way. IMO chrome bug. Probably needs a pinpointed fix, because font-size works as expected on every other browser but chrome.
Make a simple little tool under the tools tab that would make it possible for the user to enter an array of Bitcoin addresses and immediately see how they decode into a message.
It'd be good to have a .editorconfig file for things like trailing whitespace, tab size etc. I ran into this problem when I was writing some code and the default config on my editor removed a bunch of trailing whitespace. http://editorconfig.org/
When decoder discovers a block chain file it's supposed to determine its size and post it to the database server with other metadata. Apparently, fsize
is not set in the database. Investigate why and fix it.
It has become misleading to use the word donation
within the context of cryptograffiti because cryptograffiti.info is no longer accepting donations. Instead, there's a mandatory service fee when encoding messages on the user's behalf.
After loading-bar finishes, its height will animate to zero. Firefox plays the animation through and resets the height to its initial value. This results a yanking movement. Reason of this animation would be to make room for content, but If the loading-bar is positioned absolutely, it would not create an extra gap between messages at all. I suggest doing this and removing the animation completely. That would be faster and cleaner.
When executing compile.sh
, it produces a really long list of warnings. Supposedly those warnings could be dealt with so that yui-compressor
wouldn't print any warnings. Do it. Fix the warnings, do not just change the compile script to suppress the warnings. Suppressing warnings is not a solution!
This is the kind of stuff it prints:
[WARNING] Try to use a single 'var' statement per scope.
tr5=document.createElement("tr"); ---> var <--- td1_1=document.createElement("td");var
[WARNING] Try to use a single 'var' statement per scope.
td1_1=document.createElement("td"); ---> var <--- td1_2=document.createElement("td");var
[WARNING] Try to use a single 'var' statement per scope.
td1_2=document.createElement("td"); ---> var <--- td2_1=document.createElement("td");var
[WARNING] Try to use a single 'var' statement per scope.
td2_1=document.createElement("td"); ---> var <--- td2_2=document.createElement("td");var
[WARNING] Try to use a single 'var' statement per scope.
td2_2=document.createElement("td"); ---> var <--- td3_1=document.createElement("td");var
[WARNING] Try to use a single 'var' statement per scope.
td3_1=document.createElement("td"); ---> var <--- td3_2=document.createElement("td");var
[WARNING] Try to use a single 'var' statement per scope.
td3_2=document.createElement("td"); ---> var <--- td4_1=document.createElement("td");var
When attaching an image to your graffiti a dialogue should appear that suggests resizing the image so it would fit into the TX. Ideally it should come with an instant preview of the resized image.
Make it possible for the user to define a channel for the message being written. There should be a new input field under the write tab that might come in a form of a dropdown menu with predefined options such as love
, poetry
, art
, news
and stuff like that. Under the read tab there should also be a possibility to filter the messages by their categories.
Currently OP_RETURN messages are detected but not uploaded because they contain a lot of annoying spam with low value messages embedded. Create a new database functionality for storing and distinguishing low value messages such as those in OP_RETURN. When querying with get_graffiti
add a new parameter to enable the fetching of low value messages. Display low value messages under the read tab if they are not older than a couple of days.
Make a new tool that would allow entering the TX hash of any transaction as an input and have it immediately decoded and displayed nearby the input.
Currently the hashtag API allows specifying only one category for a message that is to be written on the block chain. We can see it from the below example.
https://cryptograffiti.info/#write:MSG#CAT
It would save a message MSG
under the category CAT
.
There has to be a way for specifying multiple categories. Implement the necessary functionality for the following links to work as intended.
https://cryptograffiti.info/#write:MSG#CAT1,CAT2,CAT3
https://cryptograffiti.info/#write:I love you#love,romance,valentine
See the *.js
files in the src/lib
folder and its cryptojs
subfolder. All of them contain copyright information in a form of comments. The compile.sh
script removes all comments from all files and pretty much produces a binary. This means that the licence information gets lost. However, it is stated in the licenses that in the case of a binary the copyright information should be presented in some other way. Research the issue and find out how this information should be presented in that case. Should we state it in the about tab, for example? After having found out the best way to solve this issue, please solve it by implementing the necessary changes in the code.
Design and add a desirable favicon.ico to the project.
Donation messages should be highlighted and the donation amount should be visible near the message body. Low value messages should be styled accordingly.
Some users have got confused by the placeholder buttons that appear as disabled due to the fact that their respective functionality has not yet been implemented. Either implement the functionality or remove the buttons completely to avoid future confusion.
The title text CryptoGraffiti.info is currently just a normal text. However, it should actually be a link to the default main page of the service http://cryptograffiti.info (without any hashtag in the end).
Similarly to the old version of cryptograffiti make it visible in the UI whether the decoder and encoder are currently online or offline. As a bonus it should also display whether cryptograffiti's database is accessible.
When loading for older graffiti gradually for some time and then scrolling back up to the newest graffiti then the loading and decoding of newer graffiti takes way too long time to start.
As it turns out, with longer payloads in OP_RETURN
it can happen that hex2utf8
Lua function becomes vulnerable to Denial-of-Service attacks. For example, TX dc5d9c5c98a11bb404b9c139a377a1326b27a25c6750059f16076519d65709a2
in block 566530
is one such problematic transaction. First of all, the utf8 extraction should be implemented in C++ rather than in Lua. Secondly, such extractions should be executed in parallel.
This bug only happens with the compiled version of cryptograffiti. the development version does not have it. Try adding a file to the proof of existence file area and then click cancel. the file area blinks away instantly but in development version it smoothly disappears.
Some of the messages contain ANSI ESC sequences. Currently the colour information is stripped away before showing the message to the user. Implement a proper ANSI colour support for messages that contain ANSI ESC sequences.
The whole page is pretty responsive and reacts well to custom font sized defined by the user in their browser settings. However, currently images are not scaled in accordance to font size. When the user increased browser's font size to maximum then images still remain in their original size. This looks ugly and should be fixed.
Implement functionality for the SELECT ALL ADDRESSES
button under the write tab that would select all of the generated addresses similarly to the old version of cryptograffiti.
Trying to link to a block chain message based on its TX hash.
Getting the below error because of cloudflare is harassing VPN users
Failed to load https://bitcoincash.blockexplorer.com/api/tx/28c3de1036c81ce6e16a64dc0cc7da3e5c637cf33d6a1a48aa668cd423e36c7c: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://cryptograffiti.info' is therefore not allowed access. The response had HTTP status code 403.
When this happens cryptograffiti.info should automatically try some other block explorer.
https://blockchair.com/bitcoin-sv
( see the CG_READ_APIS table in read.js
)
Right now the approximate cost of writing a message is given as a number of BTC
units (Bitcoin Cash). Since Bitcoin Core ticker in some exchanges is BTC
it might create some confusion. So, rather than displaying the appriximate cost as BTC
it should be converted to USD based on the current exchange rate of Bitcoin Cash. See the attached screenshot.
Currently messages can only be linked by their sequence number used by the CryptoGraffiti's database. This number is not universal and can even change in the future. Instead of that, messages should be referenced by their transaction hash.
For example, instead of this:
http://cryptograffiti.info/#4893
we should have this:
http://cryptograffiti.info/#00a64f2ff9aae7a34c21d07b8fc9bad79989f25295ccbddc6fbe73b3685b65a9
The user should still see #4893
in the message header but it should reference to the TX hash rather than message number.
Right now the encoders won't change the SAT_BYTE variable if it remains unchanged locally. However, the server resets it to zero every day. As a result, this variable is no longer reliable. Either implement a new table for storing globals or fix this by updating the SAT_BYTE variable every time a new day has begun or even more often.
Similarly to the old version of cryptograffiti, make the SEND TO WALLET
button work.
Currently the compile.sh
script is inside the src
folder with the index.html
. Move it one level upwards in the directory structure and edit it accordingly. Then rename that index.html
to cryptograffiti.html
and change the compile.sh
so that it would produce index.html
instead of cryptograffiti.html
. The latter makes it easier to upload this one file to the web server and get it working without having to rename it to index.html
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.