<h4>Repository
<p dir="auto"><span><a href="https://github.com/jrswab/nebulus" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://github.com/jrswab/nebulus
<h3>Bug Fixes
<h4>No Rich Text Descriptions
<p dir="auto">Added the meta tags to the main.php file for the desired content. Now, when posting the link a small description and image show for the project in apps like Discord and Twitter.
<h4>Solution
<p dir="auto">The solution was straightforward, find the needed tags and add the desired information to the server:<br />
<img src="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmR9mW96s1YAcaUCPNj6eVuh6roj5SXJ4ErTW4v9oK4fmc" alt="nebulus-rich-text" srcset="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmR9mW96s1YAcaUCPNj6eVuh6roj5SXJ4ErTW4v9oK4fmc 1x, https://images.hive.blog/1536x0/https://ipfs.io/ipfs/QmR9mW96s1YAcaUCPNj6eVuh6roj5SXJ4ErTW4v9oK4fmc 2x" />
<h3>New Features
<h4>Pin Existing Content!
<p dir="auto">This implementation took so much more time to plan and figure out than I anticipated. Between IPFS acting up during testing, PHP not running the python script, and SteemConnect redirect issues this little bit of code does not do justice on how much time I had to spend hacking my way through this feature.
<p dir="auto"><span>However voilà! Now both content creators and application developers can use <a href="/@nebulus">@nebulus to pin their content for 1 STEEM. The pining works with any IPFS hash, to be honest. Whether it is from <a href="/@dtube">@dtube, <a href="/@dsound">@dsound, or you uploaded something to your server, you can pin in on Nebulus.
<p dir="auto">The price is needed since we are not able to check the size of the file which the user wants to pin, and any pin downloads to the server taking up more space and leaving less space for account holders. As the price of STEEM increases, we plan to move away from the hard-coded 1 STEEM to $1 worth of STEEM (or some fair amount) to keep the price reasonable.
<p dir="auto">Pinning is the first step towards federating this service with many nodes. The <code>pin.py<span> script is set as a cron job and scans the blockchain for transfers to <a href="/@nebulus">@nebulus with a hash. At the same time, the script looks for any transfer with the word init. When the script finds "init" a counter ticks up followed by some math to create a round-robin style pin function. This way everyone fills up at different rates and not at the same time.
<h5>Frontend
<p dir="auto"><img src="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmWDD1Fgkne5vagiSCrnXCSuGc7vMF2byr5Sdm8HbpGn74" alt="nebulus-pin-ipfs-hashes" srcset="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmWDD1Fgkne5vagiSCrnXCSuGc7vMF2byr5Sdm8HbpGn74 1x, https://images.hive.blog/1536x0/https://ipfs.io/ipfs/QmWDD1Fgkne5vagiSCrnXCSuGc7vMF2byr5Sdm8HbpGn74 2x" />
<h5>Backend
<p dir="auto"><img src="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmZ9pWskiD9vhPwZc1gdmAoSTAwN14Skp8vCSGV2JWZNuo" alt="nebulus-python-steem-blockchain-pin-ipfs" srcset="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmZ9pWskiD9vhPwZc1gdmAoSTAwN14Skp8vCSGV2JWZNuo 1x, https://images.hive.blog/1536x0/https://ipfs.io/ipfs/QmZ9pWskiD9vhPwZc1gdmAoSTAwN14Skp8vCSGV2JWZNuo 2x" /><br />
The <code>pin function gets called at the very bottom of the python script to get the output of the <code>roundRobin function. The round-robin function returns a number that is then used to determine if the node should pin the content found in the transaction list for the Nebulus steem account.
<p dir="auto"><img src="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmYmZCJXUXgxE1hfFDBcjv8aH4XEj7kVuCYwL75q7gb1xX" alt="nebulus-pin-functions" srcset="https://images.hive.blog/768x0/https://ipfs.io/ipfs/QmYmZCJXUXgxE1hfFDBcjv8aH4XEj7kVuCYwL75q7gb1xX 1x, https://images.hive.blog/1536x0/https://ipfs.io/ipfs/QmYmZCJXUXgxE1hfFDBcjv8aH4XEj7kVuCYwL75q7gb1xX 2x" />
<p dir="auto"><code>blockNum is set as a global variable so all functions may call the information it holds. Setting this to a variable is better than hard-coding it in every function, so we only have to change it once, and even set it to something else via the STEEM blockchain if needed in the future.
<p dir="auto"><span>We are using BEEM, by <a href="/@holger80">@holger80, to access the STEEM blockchain.
<h4>GitHub Account
<p dir="auto"><span><a href="https://github.com/jrswab" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://github.com/jrswab
<h6><center>All images came from royalty and attribution free sources unless specified.
<hr />
<p dir="auto"><center>Looking to take your Steem based creations to the next level?<br />
Join us over at the <a href="https://discord.gg/YDcyTJR" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Creators' Guild Discord group! We are here to encourage, support and increase the creation of quality content.
<hr />
<p dir="auto">If you have any questions about the future of Steem<br />
or my witness please feel free to message <code>jrswab#3134 on Discord.
<p dir="auto"><a href="https://steemconnect.com/sign/account-witness-vote?witness=jrswab&approve=1" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link"><img src="https://images.hive.blog/0x0/https://steemitimages.com/DQmREvLQ5gLPh3PrZ56DNx4YWNobj8qqPFdUzsZsfTALiCK/vote-jrswab-for-steem-Witnesses%E2%80%94Steemit.gif" alt="vote-jrswab-for-steem-Witnesses—Steemit.gif" /><br />
Click here to vote with SteemConnect!
<p dir="auto"><br />
and type <code>jrswab in the box at the bottom.<br /><a href="https://steemian.info/witnesses" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">steemian.info<span>Or go to <a href="https://steemit.com/~witnesses" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://steemit.com/~witnesses<span>
You can see all active witnesses on <a href="/@drakos">@drakos'
<hr />
<p dir="auto"><a href="http://eepurl.com/cUktFz" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Click here to join the mailing list and get exclusive SDB/STEEM giveaways!
<p dir="auto">Looking to support my content creation efforts outside of the Steem Blockchain?<br />
Check out <a href="https://jrswab.com/support/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">jrswab.com/support
<hr />
<p dir="auto"><a href="https://mastodon.xyz/@jrswab" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Mastodon | <a href="https://keybase.io/jrswab" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Keybase | <a href="https://twitter.com/jrswab" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Twitter | <a href="https://gab.ai/jrswab" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Gab | <a href="https://www.minds.com/jrswab" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Minds | <a href="https://hackerculture.us" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Hacker Culture Podcast
Thank you for your contribution. You may look at the http_build_query which helps to build the query string, because some characters need to be urlencode (and htmlspecialchars may not help).
<p dir="auto">Your contribution has been evaluated according to <a href="https://join.utopian.io/guidelines" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category. <p dir="auto">To view those questions and the relevant answers related to your post, <a href="https://review.utopian.io/result/3/2322222" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">click here. <hr /> <p dir="auto"><br /> Chat with us on <a href="https://discord.gg/uTyJkNm" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Discord.<br /> <a href="https://join.utopian.io/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">[utopian-moderator]<span>Need help? Write a ticket on <a href="https://support.utopian.io/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://support.utopian.io/.Also, try not to use global variable such as
roundRobin
as it makes your function tightly coupled and not easy to unit-tested. Thepgreped
inpidKill
should be tested for validity e.g. if it is "" or None, your script may break.Thanks for the pointers @justyy! I'll read up on http_build_query and mess with those python issues.
Thank you for your review, @justyy!
So far this week you've reviewed 1 contributions. Keep up the good work!
Great work JR. You are a wizard :)
lol at least a monkey now
I don't understand such things, but can we now uploaded a video for ever to dtube, I mean to being played even after a month. Why everybody is saying that ipfs is good while we can get files from there just a few days after uploading them. And after that it's impossible to download or watch something ? or is it made specially temporary to save the space ? Can you explain please ?
Your question leads to an in-depth discussion of IPFS, but I'll do my best to give an easy answer. The reason why a video on IPFS loads for the first few days and then seems never to load again is not that the link is wrong but because the file the link is looking for is not cached on the gateway and or not on the network at all.
If you upload to IPFS (either from the command line, @nebulus, or @dtube) that video gets a unique hash for that content. As long as the video can is on the IPFS network, it plays. Sometimes the playback slow because the gateway you are watching it through has to download the file.
This problem is why @nebulus exists. The more places to pin your content the less likely your file disappears (or so it seems). Once we get federation pushed out a person running a Nebulus node can earn STEEM when they pin content uploaded to all the other nodes. The more IPFS nodes with your content saved to them the faster the file loads and the chance that the file disappears goes down drastically.
Yes, when it comes to the IPFS nodes caching content. Unless a node runs the command to pin the content, that node deletes the cached versions of files every so often. It's called garbage collection and is an IPFS feature to make sure the most popular content stays active. That said, as long as the at least one IPFS node pins your content it exists but it may take a long time for a gateway to load the content.
I see now, but people can't watch the video for ever and can't download files for ever. Why ipfs don't work better than youtube or google drive or any other website that can hold files forever ?
Is the reason behind that is because not a lot of people share the space with ipfs ?
With YouTube, access is dependent on a single centralized entity continuing to provide access. With IPFS future access only requires any entity, not necessarily its creator, to be hosting the content.
This is why this project exists, so videos will stay live forever.
I believe it's just a lack of nodes pinning files on IPFS
This project is being supported by @Fundition
Fundition is a next-generation, decentralized, peer-to-peer crowdfunding and collaboration platform, built on the Steem blockchain.
https://fundition.io.#upfundition and #fundition tags on Steem represent the projects that are started on
Are You Prepared to Make the World a Better Place too?
Read the full details of Fundition Fund program
Learn more about Fundition by reading our purplepaper
Join a community with heart based giving at its core
Thanks for the support!
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!Hey @jrswab
Want to chat? Join us on Discord https://discord.gg/h52nFrV.
Vote for Utopian Witness!
Thanks again for the support!
wow awesome concept sir...thanks for share your inportant concept..
Very impressive to your work :) @jrswab Dear.
Awe, thanks
Your Welcome :):) @Dear
@jrswab..Brilliant work to share with..You are the champion!
All day!
haha
Congratulations @jrswab! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :
<p dir="auto"><a href="http://steemitboard.com/@jrswab" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link"><img src="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/commented.png" srcset="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/commented.png 1x, https://images.hive.blog/1536x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/commented.png 2x" /> Award for the number of comments received <p dir="auto"><sub><em>Click on the badge to view your Board of Honor.<br /> <sub><em>If you no longer want to receive notifications, reply to this comment with the word <code>STOP <blockquote> <p dir="auto">Do you like <a href="https://steemit.com/@steemitboard" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">SteemitBoard's project? Then <strong><a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Vote for its witness and <strong>get one more award!Can't upload videos on Dtube, don't know why? I've tried everything.
Need help
Upload to Nebulus and then add the hash to Dtube.
But, I'm sorry. I'm not familiar with 'Nebulus'. And when I googled it, it shows that it is a game. So, how can I upload videos to a game (Nebulus)? Confused!
If you can elaborate or point me to some posts giving me a good understanding related to the issue, that would be great.@jrswab Thank you for replying sir.
We are not focused on Google SEO due to lack of help. Just head over to https://nebulus.app
Thanks :)