!smokesignal{"m":"I'd like to distribute a somewhat classified strategy update memo to current High Fryers. In this case, I'm defining \"High Fryer\" as any agent that has at least 5k FRY.\n\nIf you'd like to receive this document and have at least 5k FRY, connect to SmokeSignal with the account that has 5k FRY, and respond to this post with contact info as described below. I'll then manually check the FRY balance of each response, and distribute the document.\n\nI'm still writing the memo, but expect to have it ready to send today.\n\nI can easily distribute the document via the following methods. Just reply with which you'd prefer and the username to send it to.\n- Telegram\n- Whatsapp\n- Signal\n- Keybase","v":2,"c":{"topic":"high-fryers"}}
!smokesignal{"m":"I've [posted to r/ethereum](https://www.reddit.com/r/ethereum/comments/gjkkk1/someone_burned_100_on_smokesignal_the_message/) to try to get this some exposure.\n\nTo anyone who's interested in seeing this play out, spread the word!","v":2,"c":{"re":[9985244,"0x242e4ffdf807c0643c503be1ac91b33c280b6fc9db02ec033c8715256b84e18c"]}}
!smokesignal{"m":"Hey there. I wanted to confirm you're watching this--if so, I'll post to reddit to try to get this some exposure. If you're still around, let me know and I'll post!","v":2,"c":{"re":[9985244,"0x242e4ffdf807c0643c503be1ac91b33c280b6fc9db02ec033c8715256b84e18c"]}}
!smokesignal{"m":"lol, forgot to include the email in the last post XD\n\nsmokesignal.bootstrap@gmail.com","v":2,"c":{"topic":"need-starting-dai-or-eth?"}}
!smokesignal{"m":"Hi there, and welcome to SmokeSignal!\n\nIf you'd desperately like to use SmokeSignal to publish a **permanent, uncensorable post**, but have no starting DAI or ETH (both of which are needed for this current version), I am happy to help you out.\n\n(I'd also like to invite others to join me in this pursuit. If you have crypto to spare, reply below and we can work together to onboard new users onto web3, perhaps via some mechanism a bit more sophisticated than what I'm doing now.)\n\nIf you want to get crypto to use SmokeSignal, first you must get a web3 wallet. On desktop, I recommend getting the browser addon called Metamask. For mobile, use the Trust Wallet browser.\n\nWhen you've set up this wallet, get your *address* (if your wallet gives you several, **any of them will do**), and email it to me **with something about yourself--anything**--and I will give you both ETH and DAI so you can post something here on SmokeSignal.\n\nPlease just take a few moments to convince me beyond a reasonable doubt that you're probably a real human who really wants to use this tool. **I will ignore messages that have nothing much other than the address**.\n\nObviously I will only do this so long as I can actually keep up with the demand. Having said that I am prepared to let go a not-insignificant amount of crypto, if it leads to real usage of SmokeSignal--as the fact that I've burned $10 here should indicate.","v":2,"c":{"topic":"need-starting-dai-or-eth?"}}
!smokesignal{"m":"Fascinating! As a SmokeSignal dev, doubly so!\n\nFirst I'll say that, to my knowledge, no one involved with Foundry or SmokeSignal knows anything about who @0xC7DF19B3c2CEB7799d09336131ff1Ba78A7F4c69 is. Of course, to some degree you have to take my word for that, but there it is for what it's worth.\n\nNow, some implications of the above post that come to mind:\n\n- The author has explicitly leveraged his $100 burn to lend credence to his offer to reward the winner of his game. Otherwise, it's hard to explain why he would have burned the original $100 in the first place. Thus we have a rarity on the web: a user with no previous reputation which other users can nevertheless *rationally expect* to pay out when the time comes.\n- This will essentially accelerate the inevitable event of someone using SmokeSignal to post something that the operators of the foundrydao mirror (us!) find they must filter out. However, because we are using IPFS, we are limited in how fundamentally we can execute such censorship. Even if we update this mirror to filter out certain posts, and even apply this update to the .eth domain, there will remain an IPFS to a version of SmokeSignal that has no filtering or censorship at all.\n- In theory, I could myself write a SmokeSignal post and then censor it on the mirror, thus technically winning OP's game. However, I doubt he would actually pay out in such a corner case. And just speaking personally, I'm quite interested to see how this plays out. I don't even know what, specifically, would cross the line and push us to develop a filtering mechanism to implement in the foundrydao.com mirror.\n- Curiously, OP unchecked the donate button on this post. No hard feelings--we made it optional for a reason--but I would ask OP, if he is willing to share, why he declined to donate?","v":2,"c":{"re":[9985244,"0x242e4ffdf807c0643c503be1ac91b33c280b6fc9db02ec033c8715256b84e18c"]}}
!smokesignal{"m":"Hi there! As you seem to have guessed, yes, it's just that we have not yet exposed this support-burn mechanic in the interface yet.\n\nI'll prioritize displaying this info, along with support-tips, in the interface as the very next order of SmokeSignal business. I'll probably batch this with the UX to perform these actions.\n\nThanks a ton for this feedback! It is both helpful and vindicating :)\n\n(In case you're interested in the technical stuff, the current version simply watches for SmokeSignal event logs. I'll now have the interface also pull the `totalTipped` and `totalBurned` state for each message.)","v":2,"c":{"re":[9985064,"0xdc05b48cc88154d7b706cddf033f5f97a14e733c75b59577db8e41c242f81905"]}}
!smokesignal{"m":"It's important to be able to say words! Especially when The Man doesn't want you to...","v":2,"c":{"re":[9965526,"0x170315069b8554a08a55be6f4756c432abe588b39d83b8e2e07cf97844ecece5"]}}
!smokesignal{"m":"# Version 0.9.2 Live\n\n### Topics, Visual/UX Improvements, Mobile Support, and more!\n\nWhen we launched a couple weeks ago with what I'm going to call v0.9.0, the small bit of engagement we got helped us prioritise which features to target. We implemented replies for a quick v0.9.1 update, then started on this update, which took a bit longer.\n\nThis update contains quite a few lovely new features and fixes.\n\n#### Visual/UX Update\n\nThe damn thing just looks a lot prettier! And we have a nice explainer home page now, with a few UX entry points.\n\nAdditionally, some interactions have been smoothed over to be more intuitive; one example is how SmokeSignal now indicates a submitted message or unlock transaction is being mined.\n\n#### Topics\n\nThis was the main driver for this update--the star of the show, at least for me!\n\nThe first version of SmokeSignal simply showed all messages, sorted by time posted. This was fine for an alpha launch, but as soon as people started putting effort into their posts, I noticed that this way of presenting the posts made the conversation feel rambly and unconnected. Replies helped a bit with this, but not much.\n\nTo address this, every post now has a topic, and SmokeSignal is always viewing either a given topic or a given post (with its direct replies). These can be thought of as analogous to subreddits or channels, but note that **topics don't have owners or rules,** and are only differentiated by their names. So when you see a post in `smokesignal/announcements`, there won't be any guarantee that the people posting there are official SmokeSignal devs or representatives!\n\nIn this way, they are more like hashtags: a loose collection of *conversational topic* rather than a specific *community with boundaries and rules*.\n\nAlong the same theme, \"starting\" a topic is just a matter of writing the first post for it (the front page explains how to do this). Topic names have very few limitations--SmokeSignal just replaces spaces with dashes and lower-cases the name (i.e. `my super cool topic XD` becomes `my-super-cool-topic-xd`).\n\nWhen I built the topics column on the front page, I had to sort it by something--I barely hesitated to use the total amount burned. I noticed then that this gives each topic an implicit ranking with some very cool properties: on one hand, this ranking is *completely determined by users*, but is also *completely resilient against being gamed* (after all, you can't fake burning!)\n\nWe are very interested to see which topics rise to the top as traffic increases. In the future we will continue this theme, using burn data to sort and filter content--it's a crucial part of our plans for how to build a social media platform that has no censorship/moderation and yet is resilient against spam.\n\n#### Compose Preview and Fixed Markdown Rendering\n\nWhen we launched, the markdown rendering engine we were using turned out to be... not so great. And without a preview mechanism, the user experience was awful: you'd compose an **immutable post** only to find out that the rendered version looked anywhere from awkward to outright broken!\n\nSo first off, we have previews. Desktop users see the preview as they type, and mobile users can preview the content by tapping \"preview\". If you click the reply button to this post, you can see this for yourself, even if you don't have a web3 wallet yet!\n\nWe're also using a much more mature rendering engine, that additionally gives us finer-grained control over the markdown rendering. So if any more rendering oddities show up, we can squash them pretty quickly.\n\n#### Mobile Support\n\nSmokeSignal now works on mobile!\n\nIt will work in read-only mode for any mobile browser, with a slightly different layout than on Desktop. And if you have Trust Wallet or some other compatible mobile web3 browser, you'll be able to post as well.\n\n#### ...And more! I think!\n\nI'm sure there are other changes that I've made, and have now forgotten about! It was quite a flurry of inspired development. Schalk, can you think of anything else that's new?","v":2,"c":{"topic":"smokesignal/announcements"}}
!smokesignal{"m":"SmokeSignal is a platform that guarantees 100% uncontrolled and uncensored communication and coordination.\n\nPerhaps this lockdown is going on longer than you are comfortable with, and you'd like to start coordinating ways of fighting enforcement thereof. You could start this discussion on SmokeSignal, while keeping your identity private.\n\nMaybe you have some writing that goes against the sacred beliefs of the day, and thus you find yourself deplatformed from other social media. SmokeSignal posts are never deleted, and accounts can't be banned (more accurately, there aren't really any \"accounts\" at all).\n\nOr maybe your local government is censoring a particular piece of information ruthlessly, and you want to put it somewhere that's both immediately public and impossible to delete.\n\nMaybe you just want to publish some content somewhere you can link to (as you would with a Medium post), and allow others to comment (as you would with a Reddit thread), but you want stronger guarantees of permanence and better control of your privacy.\n\nAll of the above can be facilitated by SmokeSignal, so long as you have ETH, DAI, a web3 browser, and an Internet connection.","v":2,"c":{"topic":"smokesignal/use-cases"}}
!smokesignal{"m":"This post can never be deleted, no matter how offended anyone gets!\n\nNigger! Faggot! Cunt! Rape!\n\nThere are only two genders!\n\nYo mama a big fat ho!","v":2,"c":{"topic":"offensive-shit"}}
!smokesignal{"m":"We haven't exposed it in the interface--we probably should.\n\nBut in the mean time, if you click on the transaction in Metamask you signed to post this, there should be a \"view on etherscan\" option. That should be the transaction that contains your SmokeSignal message. To find the data there, find and click \"click to see more\", and then in that expanded section there will be a dropdown \"view input as\". Switch that to UTF-8 and your message will appear nested in some garbled text in that small box.","re":[9879622,"0xa4219eaaf8a61457ea6ef67775d101e4b271d10a5794cb047723a21ef73d5475"]}
!smokesignal{"m":"Woah, looks like the Markdown package I'm using doesn't do well with long titles.\n\nI'll try to get this sorted soon!","re":[9847272,"0xde47efe2d10270781a08ebeecf5daa47f9e0f5555c286e1b8e38939b450028af"]}
!smokesignal{"m":"Woah, registration takes a lot of gas. $16 at current gas prices, if I want it to mine anytime soon.\n\nAnd all before explaining anything... Gonna pass on that for now. For all I know it's sneakily approving all my DAI away.","re":[9846508,"0x566f5d03689a13bc977ceef8f0c7563af0b4e317bf65bd6ba83daf6694f615b7"]}
!smokesignal{"m":"Holy moly, eth.build is looking fucking dope as hell!!\n\nI highly reccomend [this video](https://www.youtube.com/watch?v=4ki1_Ol8kM4) as an intro!","re":[9840388,"0x6354f2ca7f3ffb9ec467974164b72e26f1b1498ae8fa455bda3644818efe3ea8"]}
!smokesignal{"m":"Wow, this is both bewildering and exciting. Do you have a walkthrough video of some kind?\n\n(Remember you can use links! `[link-title](url)`!)","re":[9840209,"0x59e3d3553dc943117cbf6b61f9a038b0e0a1aee0be3e0b47e886e85ab2b852cb"]}
!smokesignal{"m":"Thanks! The stack is pretty minimal really!\n\nAt the bottom is the [SmokeSignal smart contract](https://etherscan.io/address/0xf18407C16ACF13a0057b2746B29F580eb8343156#code). It's pretty simple, and mostly serves as a portal to emit Solidity events.\n\nThis front-end is built with Elm, where elm-ethereum (written by the great Coury Ditch) does a lot of the heavy lifting. The interface currently simply watches for SmokeSignal events, but will also use the minimal state in the contract soon to track tips and support-burns.\n\nThis reply mechanic is just encoded/decoded in metadata emitted in the event text. The contract doesn't know/care about replies, as will be the case with topics, tags, etc.\n\nThis Elm front-end compiles to HTML/Javascript. I then deploy it to IPFS, and the resulting hash is put into the 'content' field of the smokesignal.eth ENS domain. This allows some browsers with MetaMask to access it directly via smokesignal.eth--very high decentralization!\n\nWe also then copy the same compiled HTML/javascript to our [mirror site](https://foundrydao.com/smokesignal/app/).","re":[9839522,"0x2460ca4de7aa4fa01840797dbfbe406669df842e78b5d2cb8317df1369cc5c17"]}
Hmm, I'm feeling the need for replies and/or tags. I think that'll be the next feature I target.
If anyone wants to collaborate, or has questions/comments, but no DAI/ETH, feel free to email me at coinop.logan@gmail.com.
I hope to launch this soon--tonight or tomorrow! There are lots of different features I want to add, but I want to get feedback and use first. If you're so inclined, which of these features would improve SmokeSignal the most?
- Topics: One could attach one or more *topics* (covid, darknet, lockdown, etc) to a post, which would function similar to a hashtag. Viewers could view all messages (as is the default view now) or narrow it down by topic.
- Tipping and voting: I touch on this in my **Welcome** post. It would lead to an interesting kind of upvote, and open the door for a valued message to be directly profitable to the author.
- Replies: pretty self-explanatory.
- Filter settings: a simple UX at the top of the page to filter out low-burn messages, with some small (for now) default.
- Message permalink: Support direct links to messages, so that you can reference a particular piece of immutable, censorship-protected information and send it around.
## Welcome to SmokeSignal.
SmokeSignal is an open, global chat form built on Ethereum. The idea here is that anyone can post whatever they want by burning some amount of Dai, with the expectation that interfaces like smokesignal.eth will filter out low-burn messages when spam becomes a problem. As a community grows, it should work out that the more one burns for a new message, the more visibility and engagement the message will receive.
For example, you'll notice that my previous message only burned 0.01 DAI, but this one burned 2 DAI. Thus, as this and other interfaces start to filter out low-burn messages, the less important 'testing' message will naturally disappear from the user experience, while this intro message will last a bit longer.
In addition to posting your own messages, the contract supports burning or tipping DAI for messages from others you like. Burning will increase the message's visibility, and tipping simply sends the DAI straight to the author of the message. These actions are already available in the contract, and should be exposed in this interface shortly given enough community attention.
We at Team Toast expect these simple rules to facilitate a public conversation that avoids many of the emerging issues of traditional social media, such as deplatforming, censorship, and privacy concerns; further, we have a hunch it will prove remarkably effective at magnifying the signal among the conversational noise. I will write more on this shortly.
You may have noticed my face to the left with a sly look and stylish hair. I didn't choose this face--it was generated from my Ethereum address via the Elm [Phace package](https://package.elm-lang.org/packages/coinop-logan/phace). If you'd like to see what phace your addresses map to, make sure your web3 wallet is unlocked and click "connect to wallet" below! And then say hi!
Finally, you might be reading this from a variety of tools. Note that smokesignal.eth will host the canonical, up-to-date SmokeSignal interface, and should remain available in scenarios where traditional web infrastructure fails.
PPPPPPPPPPPPPV[`PPPPPPPPPPPPPPPV[`Ȑmsg.sender is not Initiator.msg.sender is not Beneficiary.msg.sender is not Responder.msg.sender is not Custodian.msg.sender is not Beneficiary.The deposit deadline has passed!`DYou didn't include enough value!`Dmsg.sender is not Custodian.msg.sender is not Initiator.inPhase check failed.autorecallInterval has passed; this offer has expired.The poke reward has already been sent!A beneficiaryDeposit greater than tradeAmount is not allowed.autorelease has passed; you can no longer call burn.An abortPunishment greater than beneficiaryDeposit is not allowed.)You didn't include the correct amount of value!
PPPPPPPPPPPPPV[`PPPPPPPPPPPPPPPV[`Ȑmsg.sender is not Initiator.msg.sender is not Beneficiary.msg.sender is not Responder.msg.sender is not Custodian.msg.sender is not Beneficiary.The deposit deadline has passed!`Dmsg.sender is not Custodian.msg.sender is not Initiator.Token burn failed!Final DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of founderFee+devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Token transfer to Beneficiary failed!The poke reward has already been sent!Final release transfer to beneficiary failed!Recall of DAI to initiator failed!Token transfer to Custodian failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?A beneficiaryDeposit greater than tradeAmount is not allowed.Refund of pokeReward to Initiator failed!Token transfer to founderFeeAddress failed!autorelease has passed; you can no longer call burn.An abortPunishment greater than beneficiaryDeposit is not allowed.)Token transfer failed. Did you call approve() on the DAI contract?
msg.sender is not Initiator.inPhase check failed.msg.sender is not Beneficiary.msg.sender is not Responder.inPhase check failed.msg.sender is not Custodian.inPhase check failed.msg.sender is not Beneficiary.The deposit deadline has passed!inPhase check failed.inPhase check failed.inPhase check failed.msg.sender is not Custodian.inPhase check failed.inPhase check failed.inPhase check failed.inPhase check failed.msg.sender is not Initiator.inPhase check failed.Token burn failed!Final DAI burn failed!Token transfer to devFeeAddress failed!Token refund of founderFee+devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Token transfer to Beneficiary failed!The poke reward has already been sent!Final release transfer to beneficiary failed!Recall of DAI to initiator failed!Token transfer to Custodian failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?A beneficiaryDeposit greater than tradeAmount is not allowed.Refund of pokeReward to Initiator failed!Token transfer to founderFeeAddress failed!autorelease has passed; you can no longer call burn.An abortPunishment greater than beneficiaryDeposit is not allowed.)Token transfer failed. Did you call approve() on the DAI contract?
PPPPPPPPPPPPPV[`PPPPPPPPPPPPPPPV[`Ȑmsg.sender is not Beneficiary.msg.sender is not Custodian.msg.sender is not Beneficiary.The deposit deadline has passed!`Dmsg.sender is not Custodian.msg.sender is not Responder.msg.sender is not Initiator.msg.sender is not Initiator.Token burn failed!Final DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of founderFee+devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Token transfer to Beneficiary failed!Final release transfer to beneficiary failed!Recall of DAI to initiator failed!Token transfer to Custodian failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?A beneficiaryDeposit greater than tradeAmount is not allowed.Refund of pokeReward to Initiator failed!Token transfer to founderFeeAddress failed!You can only communicate once the trade contains two parties.autorelease has passed; you can no longer call burn.An abortPunishment greater than beneficiaryDeposit is not allowed.)Token transfer failed. Did you call approve() on the DAI contract?
PPPPPPPPPPPPPV[`PPPPPPPPPPPPPPPV[`Ȑmsg.sender is not Beneficiary.msg.sender is not Custodian.msg.sender is not Beneficiary.The deposit deadline has passed!`Dmsg.sender is not Custodian.msg.sender is not Responder.msg.sender is not Initiator.msg.sender is not Initiator.Token burn failed!Final DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of founderFee+devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Token transfer to Beneficiary failed!Final release transfer to beneficiary failed!Recall of DAI to initiator failed!Token transfer to Custodian failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?A beneficiaryDeposit greater than tradeAmount is not allowed.Refund of pokeReward to Initiator failed!Token transfer to founderFeeAddress failed!You can only communicate once the trade contains two parties.autorelease has passed; you can no longer call burn.An abortPunishment greater than beneficiaryDeposit is not allowed.)Token transfer failed. Did you call approve() on the DAI contract?
PPPPPPPPPPPPPV[`PPPPPPPPPPPPPPPV[`Ȑmsg.sender is not Beneficiary.msg.sender is not Custodian.msg.sender is not Beneficiary.The deposit deadline has passed!`Dmsg.sender is not Custodian.msg.sender is not Responder.msg.sender is not Initiator.msg.sender is not Initiator.Token burn failed!Final DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of founderFee+devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Token transfer to Beneficiary failed!Final release transfer to beneficiary failed!Recall of DAI to initiator failed!Token transfer to Custodian failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?A beneficiaryDeposit greater than tradeAmount is not allowed.Refund of pokeReward to Initiator failed!Token transfer to founderFeeAddress failed!You can only communicate once the trade contains two parties.autorelease has passed; you can no longer call burn.An abortPunishment greater than beneficiaryDeposit is not allowed.)Token transfer failed. Did you call approve() on the DAI contract?
["USD","1"][{"type":"custom","info":"Be Coury and give me a dollar."}]9981279a5329c36a16e04c459e4ca22148d5f4cac7ea8485d85502035a4685f146c4ac187a4481d27d0a7b65e4a51be4c5b49a5201cebfea87a668843fd0e51c4bd2cf30685e833c73a6780a33838edc2d623d183b7d55036e20da05223cd8fae8be0fa01b38e514eefa0c69ca939ea2e4942cd791e6240b19ec043e83bbf2bf
PPPPPPPPPPPPPPPV[`msg.sender is not Buyer.msg.sender is not Seller.msg.sender is not Buyer.The deposit deadline has passed!`Dmsg.sender is not Seller.msg.sender is not Responder.msg.sender is not Initiator.msg.sender is not Initiator.Token burn failed!Token transfer to Buyer failed!Token transfer to Seller failed!`DFinal DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Recall of DAI to initiator failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?Final release transfer to buyer failed!Refund of pokeReward to Initiator failed!You can't open a trade without first depositing DAI.)Token transfer failed. Did you call approve() on the DAI contract?
PPPPPPPPPPPPPPPV[`msg.sender is not Buyer.msg.sender is not Seller.msg.sender is not Buyer.The deposit deadline has passed!`Dmsg.sender is not Seller.msg.sender is not Responder.msg.sender is not Initiator.msg.sender is not Initiator.Token burn failed!Token transfer to Buyer failed!Token transfer to Seller failed!`DFinal DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Recall of DAI to initiator failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?Final release transfer to buyer failed!Refund of pokeReward to Initiator failed!You can't open a trade without first depositing DAI.)Token transfer failed. Did you call approve() on the DAI contract?
PPPPPPPPPPPPPPPV[`msg.sender is not Buyer.msg.sender is not Seller.msg.sender is not Buyer.The deposit deadline has passed!`Dmsg.sender is not Seller.msg.sender is not Responder.msg.sender is not Initiator.msg.sender is not Initiator.Token burn failed!Token transfer to Buyer failed!Token transfer to Seller failed!`DFinal DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Recall of DAI to initiator failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?Final release transfer to buyer failed!Refund of pokeReward to Initiator failed!You can't open a trade without first depositing DAI.)Token transfer failed. Did you call approve() on the DAI contract?
["USD","30"][{"type":"custom","info":"Help me pay for a $30 airbnb stay. Once you commit, message me on Whatsapp (+841665001895) and I can help you find the listing and give you my info to fill out the order."}]9981279a5329c36a16e04c459e4ca22148d5f4cac7ea8485d85502035a4685f146c4ac187a4481d27d0a7b65e4a51be4c5b49a5201cebfea87a668843fd0e51c4bd2cf30685e833c73a6780a33838edc2d623d183b7d55036e20da05223cd8fae8be0fa01b38e514eefa0c69ca939ea2e4942cd791e6240b19ec043e83bbf2bf
["USD","30"][{"type":"custom","info":"Help me pay for a $30 airbnb stay. Once you commit, message me on Whatsapp (+841665001895) and I can help you find the listing and give you my info to fill out the order.\n\n"}]9981279a5329c36a16e04c459e4ca22148d5f4cac7ea8485d85502035a4685f146c4ac187a4481d27d0a7b65e4a51be4c5b49a5201cebfea87a668843fd0e51c4bd2cf30685e833c73a6780a33838edc2d623d183b7d55036e20da05223cd8fae8be0fa01b38e514eefa0c69ca939ea2e4942cd791e6240b19ec043e83bbf2bf
["USD","30"][{"type":"custom","info":"Help me pay for a $30 airbnb stay. Once you commit, message me on Whatsapp (+841665001895) and I can help you find the listing and give you my info to fill out the order."}]9981279a5329c36a16e04c459e4ca22148d5f4cac7ea8485d85502035a4685f146c4ac187a4481d27d0a7b65e4a51be4c5b49a5201cebfea87a668843fd0e51c4bd2cf30685e833c73a6780a33838edc2d623d183b7d55036e20da05223cd8fae8be0fa01b38e514eefa0c69ca939ea2e4942cd791e6240b19ec043e83bbf2bf
["USD","30"][{"type":"custom","info":"Help me pay for a $30 airbnb stay. Once you commit, message me on Whatsapp (+841665001895) and I can help you find the listing and give you my info to fill out the order."}]9981279a5329c36a16e04c459e4ca22148d5f4cac7ea8485d85502035a4685f146c4ac187a4481d27d0a7b65e4a51be4c5b49a5201cebfea87a668843fd0e51c4bd2cf30685e833c73a6780a33838edc2d623d183b7d55036e20da05223cd8fae8be0fa01b38e514eefa0c69ca939ea2e4942cd791e6240b19ec043e83bbf2bf
inPhase check failed.msg.sender is not Buyer.inPhase check failed.msg.sender is not Seller.inPhase check failed.msg.sender is not Buyer.The deposit deadline has passed!inPhase check failed.inPhase check failed.msg.sender is not Seller.inPhase check failed.msg.sender is not Responder.inPhase check failed.inPhase check failed.inPhase check failed.msg.sender is not Initiator.msg.sender is not Initiator.inPhase check failed.Token burn failed!Token transfer to Buyer failed!Token transfer to Seller failed!Final DAI burn failed!Token transfer to devFeeAddress failed!Token refund of devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Recall of DAI to initiator failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?Final release transfer to buyer failed!Refund of pokeReward to Initiator failed!You can't open a trade without first depositing DAI.)Token transfer failed. Did you call approve() on the DAI contract?
["DSF","14"][{"type":"custom","info":"I want 14 days of Steam Family Access to a Steam account with the game Sekiro: Shadows Die Twice.\n\nI'll mostly want to play between 06:00 and 14:00 UTC. Please don't commit unless you won't be playing (too much!) during that time.\n\nCommit, and I'll send you my Steam name to add as a friend. From there we can coordinate to turn on Steam Family Access through Steam Chat."}]9981279a5329c36a16e04c459e4ca22148d5f4cac7ea8485d85502035a4685f146c4ac187a4481d27d0a7b65e4a51be4c5b49a5201cebfea87a668843fd0e51c4bd2cf30685e833c73a6780a33838edc2d623d183b7d55036e20da05223cd8fae8be0fa01b38e514eefa0c69ca939ea2e4942cd791e6240b19ec043e83bbf2bf
msg.sender is not Buyer.msg.sender is not Seller.msg.sender is not Buyer.The deposit deadline has passed!`Dmsg.sender is not Seller.msg.sender is not Responder.msg.sender is not Initiator.msg.sender is not Initiator.Token burn failed!Token transfer to Buyer failed!Token transfer to Seller failed!`DFinal DAI burn failed!inPhase check failed.Token transfer to devFeeAddress failed!Token refund of devFee+pokeReward to Initiator failed!autorecallInterval has passed; this offer has expired.Recall of DAI to initiator failed!Can't transfer the required deposit from the DAI contract. Did you call approve first?Final release transfer to buyer failed!Refund of pokeReward to Initiator failed!You can't open a trade without first depositing DAI.)Token transfer failed. Did you call approve() on the DAI contract?ebzzr0X Xμίɐ_"
["STM","1"][{"type":"custom","info":"Buy me the Steam game Fortresscraft Evolved the next time it goes on sale. It's usually $12 but I've seen it as low as 75% off.\n\nMy Steam username is Syriven. Friend me on there either before or after you commit, and gift me the game."}]9981279a5329c36a16e04c459e4ca22148d5f4cac7ea8485d85502035a4685f146c4ac187a4481d27d0a7b65e4a51be4c5b49a5201cebfea87a668843fd0e51c4bd2cf30685e833c73a6780a33838edc2d623d183b7d55036e20da05223cd8fae8be0fa01b38e514eefa0c69ca939ea2e4942cd791e6240b19ec043e83bbf2bf
["USD","20"][{"type":"custom","info":"Pay back $20 of Dad Loan"}]d44f4a1327de80102a3ba7b396af284a70d9d702bd159706255140a084368b87e4f3b67677bb15a0a3288b66009d444dd89b3801bb98ce2c2fb61d2136f16d7ca3528c940be679316b6f194376c58b9aeca2f60adf8718a91acb773e7e561d936384f6df963b5d187466f5321f100865ecdc8d42a2b1826eb156344c6ed6c881
["USD","1"][{"type":"custom","info":"Hoi An, bla bla bla Vietnam"}]a719062c3c8397c3fd51ed29c752624726a8eafc9f2a6e87f4abae2ef7c73c25ec1df3545ad98ef5932e6fe87363c044b125d2d9c3fb960d7118336de82208f47fb9e2eb8f2588963e48451ecbcff1b4601f182025c8b48c5a25ca344358ed9dd8a7f4243bb3b8d3a0ad0a1943950bef0aa6ce4a84b5933e61886a20a2f4f237