Built for π, LinkedIn, and Threads, powered by AI
Write & schedule, effortlessly
Craft and publish engaging content in an app built for creators.
NEW
Publish anywhere
Post on LinkedIn, Threads, & Mastodon at the same time, in one click.
Make it punchier π
Typefully
@typefully
We're launching a Command Bar today with great commands and features.
AI ideas and rewrites
Get suggestions, tweet ideas, and rewrites powered by AI.
Turn your tweets & threads into a social blog
Give your content new life with our beautiful, sharable pages. Make it go viral on other platforms too.
+14
Followers
Powerful analytics to grow faster
Easily track your engagement analytics to improve your content and grow faster.
Build in public
Share a recent learning with your followers.
Create engagement
Pose a thought-provoking question.
Never run out of ideas
Get prompts and ideas whenever you write - with examples of popular tweets.
@aaditsh
I think this thread hook could be improved.
@frankdilo
On it π₯
Share drafts & leave comments
Write with your teammates and get feedback with comments.
NEW
Easlo
@heyeaslo
Reply with "Notion" to get early access to my new template.
Jaga
@kandros5591
Notion π
DM Sent
Create giveaways with Auto-DMs
Send DMs automatically based on engagement with your tweets.
And much more:
Auto-Split Text in Posts
Thread Finisher
Tweet Numbering
Pin Drafts
Connect Multiple Accounts
Automatic Backups
Dark Mode
Keyboard Shortcuts
Creators loveΒ Typefully
170,000+ creators andΒ teams chose Typefully to curate their Twitter presence.
Marc KΓΆhlbrugge@marckohlbrugge
Tweeting more with @typefully these days.
π Distraction-free
βοΈ Write-only Twitter
𧡠Effortless threads
π Actionable metrics
I recommend giving it a shot.
Jurre Houtkamp@jurrehoutkamp
Typefully is fantastic and way too cheap for what you get.
Weβve tried many alternatives at @framer but nothing beats it. If youβre still tweeting from Twitter youβre wasting time.
DHH@dhh
This is my new go-to writing environment for Twitter threads.
They've built something wonderfully simple and distraction free with Typefully π
Santiago@svpino
For 24 months, I tried almost a dozen Twitter scheduling tools.
Then I found @typefully, and I've been using it for seven months straight.
When it comes down to the experience of scheduling and long-form content writing, Typefully is in a league of its own.
After trying literally all the major Twitter scheduling tools, I settled with @typefully.
Killer feature to me is the native image editor β unique and super useful π
Visual Theory@visualtheory_
Really impressed by the way @typefully has simplified my Twitter writing + scheduling/publishing experience.
Beautiful user experience.
0 friction.
Simplicity is the ultimate sophistication.
Queue your content inΒ seconds
Write, schedule and boost your tweets - withΒ noΒ need forΒ extra apps.
Schedule with one click
Queue your post with a single click - or pick a time manually.
Pick the perfect time
Time each post to perfection with Typefully's performance analytics.
Boost your content
Retweet and plug your posts for automated engagement.
Start creating a content queue.
Write once, publish everywhere
We natively support multiple platforms, so that you can expand your reach easily.
Check the analytics thatΒ matter
Build your audience with insights that makeΒ sense.
Writing prompts & personalized postΒ ideas
Break through writer's block with great ideas and suggestions.
Never run out of ideas
Enjoy daily prompts and ideas to inspire your writing.
Use AI for personalized suggestions
Get inspiration from ideas based on your own past tweets.
Flick through topics
Or skim through curated collections of trending tweets for each topic.
Write, edit, and track tweetsΒ together
Write and publish with your teammates andΒ friends.
Share your drafts
Brainstorm and bounce ideas with your teammates.
NEW
@aaditsh
I think this thread hook could be improved.
@frankdilo
On it π₯
Add comments
Get feedback from coworkers before you hit publish.
Read, Write, Publish
Read, WriteRead
Control user access
Decide who can view, edit, or publish your drafts.
ππ I present a way to set up rate limits that are automatically updated, dynamically increase over time, and protect your protocol from big hacks.
You can find π a reference implementation and the thinking behind all of this.
Recently I've been thinking about limiting the damage hacks do. And I've had chats with a few founders trying to solve this issue with very different approaches.
It's nearly impossible to ensure code is completely safe, but there might be ways to limit the amount of damage done
Many protocols, especially in the beginning, limit the number of funds users can deposit. This choice is usually done to prevent the amount of lost user funds in case a hack happens or the protocol malfunctions.
ποΈ However, these limits are set by the governance. There are a few problems with this approach.
1οΈβ£ Setting the limit through governance is expensive and gives power to a very limited number of people.
2οΈβ£ It takes a lot of time since the vote needs to pass.
3οΈβ£ The proposer needs to pick the right amount, and we're stuck with that until the gov decides to update it.
π§πΌβπ» My approach implements a few ways of setting limits at the protocol level.
And I can explain each approach and its advantages and disadvantages. I also add handwritten notes explaining how this works in practice with concrete numbers.
The first and simplest way to implement a limit is a
1οΈβ£ Limit per action
This type of rate limiting blocks any amount higher than the specified limit.
You can achieve this by defining a modifier that receives the argument `amount` and checks if it's above the specified limit.
πͺ‘ This isn't too difficult to implement but doesn't help much. An attacker could still extract infinite funds, but not all at once.
They need to split their action into multiple actions. Eventually, they withdraw as many funds as they want.
The second way is a bit better
2οΈβ£ Rate limit per second
You can define a rate limit per second enforced since the limit was set. This does limit the number of moved tokens but has other associated risks.
If the protocol was used a relatively long time ago but not so much recently, there is a lot of unused rate limit which can be used up all at once.
I hope my poorly hand-drawn graph shows this case.
A different way of doing this is implementing a
3οΈβ£ dynamically increasing bucket system.
You can think about this as having an empty bucket available for the actions you want to limit. If the bucket fills up, you need a larger bucket for the next time interval.
I like this system much more because even though the buckets increase over time, they increase only if the protocol increases in usage.
If the protocol is not used anymore, the limit falls to the initially set limit.
It does not require an expensive governance vote to update the limit to new highs, the cost is offloaded to the users interacting with the protocol.
Of course, the implementation can be improved to
- β½οΈ use less gas
- π¦ have more features
- π€ be more readable
Also, there might be other problems in the implementation that we don't know about. The point of this implementation is for educational purposes and to have fun.
github.com/cleanunicorn/rate-limit
If you got this far, we can start discussing different approaches to this problem. And I am curious to hear what your ideas are.
Let me start.
There are a few off-chain approaches one could do to protect their protocol.
π Analyze the trends and progressively move the limit higher (or lower).
This either requires direct access to the protocol or an ordinary governance vote. However, it centralizes power if it's done directly, or it's expensive and slow if it goes through governance.
π Monitor the mem pool and try to front-run the hacking transaction.
This is even more difficult to do in practice because it's really hard to know in real-time what the hacks are; one also needs relationships with block producers for higher certainty that it will be included.