Your Body is Preserved Blameless
“May the God of peace himself sanctify you completely. May your whole spirit, soul, and body be preserved blameless at the coming of our Lord Jesus Christ. He who calls you is faithful, who will also do it.” (1 Thessalonians 5:23-24 WEB)
The title “God of peace” in Hebrew might be translated as “Yahweh shalom” whereby shalom means being whole and complete, not lacking or damaged in any way.
I love how the apostle Paul said that it is the God of peace Himself who will sanctify us completely in spirit, soul, and body. God is the faithful one who will do it.
This truth takes all the burden off our shoulders, and we can just rest in His ability and promise.
When your body is sanctified completely and preserved blameless, it means that it is free from the effects of death and curse in the world. Sanctify has this meaning: “to specially set apart from what is common, for a special purpose.”
It means that your body will be young, healthy, fit, and strong now, so that when our Lord returns, He will find it in a blameless state of shalom.
When you believe that God will do it, He will do it for you. If you believe the world that says everyone ages and dies, and sow their kind of death-producing words, that is the result you will reap.
Yahweh shalom will impart His shalom to make your body whole, complete, and not lacking or damaged in any way. Won’t you believe and confess it?
Declare with me: “The God of peace sanctifies my body completely, preserving my body blameless for Jesus’ return. As Jesus’ body is young, healthy, fit, strong, and full of shalom peace, so am I in this world. Amen!”
Instead of becoming older, let’s grow younger and younger together. Growing is when you receive life-giving power. Join me on a 31 days journey of exploring God’s youth renewal promises: https://bit.ly/younger-and-younger
同時也有1部Youtube影片,追蹤數超過6萬的網紅粒方不插電,也在其Youtube影片中提到,又要來推坑阿滴桌遊啦!這次要來玩的是戰鎚冥土世界,有興趣的話可以點以下連結:https://www.warhammer-world.info/home/product_detail/15 Warhammer Underworlds is a tactical arena combat game....
find your fit meaning 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] Uniswap v3 Features Explained in Depth
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Once again the game-changing DEX 🦄 👑
Image source: https://uniswap.org/blog/uniswap-v3/
Outline
0. Intro1. Uniswap & AMM recap2. Ticks 3. Concentrated liquidity4. Range orders: reversible limit orders5. Impacts of v36. Conclusion
0. Intro
The announcement of Uniswap v3 is no doubt one of the most exciting news in the DeFi place recently 🔥🔥🔥
While most have talked about the impact v3 can potentially bring on the market, seldom explain the delicate implementation techniques to realize all those amazing features, such as concentrated liquidity, limit-order-like range orders, etc.
Since I’ve covered Uniswap v1 & v2 (if you happen to know Mandarin, here are v1 & v2), there’s no reason for me to not cover v3 as well ✅
Thus, this article aims to guide readers through Uniswap v3, based on their official whitepaper and examples made on the announcement page. However, one needs not to be an engineer, as not many codes are involved, nor a math major, as the math involved is definitely taught in your high school, to fully understand the following content 😊😊😊
If you really make it through but still don’t get shxt, feedbacks are welcomed! 🙏
There should be another article focusing on the codebase, so stay tuned and let’s get started with some background noise!
1. Uniswap & AMM recap
Before diving in, we have to first recap the uniqueness of Uniswap and compare it to traditional order book exchanges.
Uniswap v1 & v2 are a kind of AMMs (automated market marker) that follow the constant product equation x * y = k, with x & y stand for the amount of two tokens X and Y in a pool and k as a constant.
Comparing to order book exchanges, AMMs, such as the previous versions of Uniswap, offer quite a distinct user experience:
AMMs have pricing functions that offer the price for the two tokens, which make their users always price takers, while users of order book exchanges can be both makers or takers.
Uniswap as well as most AMMs have infinite liquidity¹, while order book exchanges don’t. The liquidity of Uniswap v1 & v2 is provided throughout the price range [0,∞]².
Uniswap as well as most AMMs have price slippage³ and it’s due to the pricing function, while there isn’t always price slippage on order book exchanges as long as an order is fulfilled within one tick.
In an order book, each price (whether in green or red) is a tick. Image source: https://ftx.com/trade/BTC-PERP
¹ though the price gets worse over time; AMM of constant sum such as mStable does not have infinite liquidity
² the range is in fact [-∞,∞], while a price in most cases won’t be negative
³ AMM of constant sum does not have price slippage
2. Tick
The whole innovation of Uniswap v3 starts from ticks.
For those unfamiliar with what is a tick:
Source: https://www.investopedia.com/terms/t/tick.asp
By slicing the price range [0,∞] into numerous granular ticks, trading on v3 is highly similar to trading on order book exchanges, with only three differences:
The price range of each tick is predefined by the system instead of being proposed by users.
Trades that happen within a tick still follows the pricing function of the AMM, while the equation has to be updated once the price crosses the tick.
Orders can be executed with any price within the price range, instead of being fulfilled at the same one price on order book exchanges.
With the tick design, Uniswap v3 possesses most of the merits of both AMM and an order book exchange! 💯💯💯
So, how is the price range of a tick decided?
This question is actually somewhat related to the tick explanation above: the minimum tick size for stocks trading above 1$ is one cent.
The underlying meaning of a tick size traditionally being one cent is that one cent (1% of 1$) is the basis point of price changes between ticks, ex: 1.02 — 1.01 = 0.1.
Uniswap v3 employs a similar idea: compared to the previous/next price, the price change should always be 0.01% = 1 basis point.
However, notice the difference is that in the traditional basis point, the price change is defined with subtraction, while here in Uniswap it’s division.
This is how price ranges of ticks are decided⁴:
Image source: https://uniswap.org/whitepaper-v3.pdf
With the above equation, the tick/price range can be recorded in the index form [i, i+1], instead of some crazy numbers such as 1.0001¹⁰⁰ = 1.0100496621.
As each price is the multiplication of 1.0001 of the previous price, the price change is always 1.0001 — 1 = 0.0001 = 0.01%.
For example, when i=1, p(1) = 1.0001; when i=2, p(2) = 1.00020001.
p(2) / p(1) = 1.00020001 / 1.0001 = 1.0001
See the connection between the traditional basis point 1 cent (=1% of 1$) and Uniswap v3’s basis point 0.01%?
Image source: https://tenor.com/view/coin-master-cool-gif-19748052
But sir, are prices really granular enough? There are many shitcoins with prices less than 0.000001$. Will such prices be covered as well?
Price range: max & min
To know if an extremely small price is covered or not, we have to figure out the max & min price range of v3 by looking into the spec: there is a int24 tick state variable in UniswapV3Pool.sol.
Image source: https://uniswap.org/whitepaper-v3.pdf
The reason for a signed integer int instead of an uint is that negative power represents prices less than 1 but greater than 0.
24 bits can cover the range between 1.0001 ^ (2²³ — 1) and 1.0001 ^ -(2)²³. Even Google cannot calculate such numbers, so allow me to offer smaller values to have a rough idea of the whole price range:
1.0001 ^ (2¹⁸) = 242,214,459,604.341
1.0001 ^ -(2¹⁷) = 0.000002031888943
I think it’s safe to say that with a int24 the range can cover > 99.99% of the prices of all assets in the universe 👌
⁴ For implementation concern, however, a square root is added to both sides of the equation.
How about finding out which tick does a price belong to?
Tick index from price
The answer to this question is rather easy, as we know that p(i) = 1.0001^i, simply takes a log with base 1.0001 on both sides of the equation⁴:
Image source: https://www.codecogs.com/latex/eqneditor.php
Let’s try this out, say we wanna find out the tick index of 1000000.
Image source: https://ncalculators.com/number-conversion/log-logarithm-calculator.htm
Now, 1.0001¹³⁸¹⁶² = 999,998.678087146. Voila!
⁵ This formula is also slightly modified to fit the real implementation usage.
3. Concentrated liquidity
Now that we know how ticks and price ranges are decided, let’s talk about how orders are executed in a tick, what is concentrated liquidity and how it enables v3 to compete with stablecoin-specialized DEXs (decentralized exchange), such as Curve, by improving the capital efficiency.
Concentrated liquidity means LPs (liquidity providers) can provide liquidity to any price range/tick at their wish, which causes the liquidity to be imbalanced in ticks.
As each tick has a different liquidity depth, the corresponding pricing function x * y = k also won’t be the same!
Each tick has its own liquidity depth. Image source: https://uniswap.org/blog/uniswap-v3/
Mmm… examples are always helpful for abstract descriptions 😂
Say the original pricing function is 100(x) * 1000(y) = 100000(k), with the price of X token 1000 / 100 = 10 and we’re now in the price range [9.08, 11.08].
If the liquidity of the price range [11.08, 13.08] is the same as [9.08, 11.08], we don’t have to modify the pricing function if the price goes from 10 to 11.08, which is the boundary between two ticks.
The price of X is 1052.63 / 95 = 11.08 when the equation is 1052.63 * 95 = 100000.
However, if the liquidity of the price range [11.08, 13.08] is two times that of the current range [9.08, 11.08], balances of x and y should be doubled, which makes the equation become 2105.26 * 220 = 400000, which is (1052.63 * 2) * (110 * 2) = (100000 * 2 * 2).
We can observe the following two points from the above example:
Trades always follow the pricing function x * y = k, while once the price crosses the current price range/tick, the liquidity/equation has to be updated.
√(x * y) = √k = L is how we represent the liquidity, as I say the liquidity of x * y = 400000 is two times the liquidity of x * y = 100000, as √(400000 / 100000) = 2.
What’s more, compared to liquidity on v1 & v2 is always spread across [0,∞], liquidity on v3 can be concentrated within certain price ranges and thus results in higher capital efficiency from traders’ swapping fees!
Let’s say if I provide liquidity in the range [1200, 2800], the capital efficiency will then be 4.24x higher than v2 with the range [0,∞] 😮😮😮 There’s a capital efficiency comparison calculator, make sure to try it out!
Image source: https://uniswap.org/blog/uniswap-v3/
It’s worth noticing that the concept of concentrated liquidity was proposed and already implemented by Kyper, prior to Uniswap, which is called Automated Price Reserve in their case.⁵
⁶ Thanks to Yenwen Feng for the information.
4. Range orders: reversible limit orders
As explained in the above section, LPs of v3 can provide liquidity to any price range/tick at their wish. Depending on the current price and the targeted price range, there are three scenarios:
current price < the targeted price range
current price > the targeted price range
current price belongs to the targeted price range
The first two scenarios are called range orders. They have unique characteristics and are essentially fee-earning reversible limit orders, which will be explained later.
The last case is the exact same liquidity providing mechanism as the previous versions: LPs provide liquidity in both tokens of the same value (= amount * price).
There’s also an identical product to the case: grid trading, a very powerful investment tool for a time of consolidation. Dunno what’s grid trading? Check out Binance’s explanation on this, as this topic won’t be covered!
In fact, LPs of Uniswap v1 & v2 are grid trading with a range of [0,∞] and the entry price as the baseline.
Range orders
To understand range orders, we’d have to first revisit how price is discovered on Uniswap with the equation x * y = k, for x & y stand for the amount of two tokens X and Y and k as a constant.
The price of X compared to Y is y / x, which means how many Y one can get for 1 unit of X, and vice versa the price of Y compared to X is x / y.
For the price of X to go up, y has to increase and x decrease.
With this pricing mechanism in mind, it’s example time!
Say an LP plans to place liquidity in the price range [15.625, 17.313], higher than the current price of X 10, when 100(x) * 1000(y) = 100000(k).
The price of X is 1250 / 80 = 15.625 when the equation is 80 * 1250 = 100000.
The price of X is 1315.789 / 76 = 17.313 when the equation is 76 * 1315.789 = 100000.
If now the price of X reaches 15.625, the only way for the price of X to go even higher is to further increase y and decrease x, which means exchanging a certain amount of X for Y.
Thus, to provide liquidity in the range [15.625, 17.313], an LP needs only to prepare 80 — 76 = 4 of X. If the price exceeds 17.313, all 4 X of the LP is swapped into 1315.789 — 1250 = 65.798 Y, and then the LP has nothing more to do with the pool, as his/her liquidity is drained.
What if the price stays in the range? It’s exactly what LPs would love to see, as they can earn swapping fees for all transactions in the range! Also, the balance of X will swing between [76, 80] and the balance of Y between [1250, 1315.789].
This might not be obvious, but the example above shows an interesting insight: if the liquidity of one token is provided, only when the token becomes more valuable will it be exchanged for the less valuable one.
…wut? 🤔
Remember that if 4 X is provided within [15.625, 17.313], only when the price of X goes up from 15.625 to 17.313 is 4 X gradually swapped into Y, the less valuable one!
What if the price of X drops back immediately after reaching 17.313? As X becomes less valuable, others are going to exchange Y for X.
The below image illustrates the scenario of DAI/USDC pair with a price range of [1.001, 1.002] well: the pool is always composed entirely of one token on both sides of the tick, while in the middle 1.001499⁶ is of both tokens.
Image source: https://uniswap.org/blog/uniswap-v3/
Similarly, to provide liquidity in a price range < current price, an LP has to prepare a certain amount of Y for others to exchange Y for X within the range.
To wrap up such an interesting feature, we know that:
Only one token is required for range orders.
Only when the current price is within the range of the range order can LP earn trading fees. This is the main reason why most people believe LPs of v3 have to monitor the price more actively to maximize their income, which also means that LPs of v3 have become arbitrageurs 🤯
I will be discussing more the impacts of v3 in 5. Impacts of v3.
⁷ 1.001499988 = √(1.0001 * 1.0002) is the geometric mean of 1.0001 and 1.0002. The implication is that the geometric mean of two prices is the average execution price within the range of the two prices.
Reversible limit orders
As the example in the last section demonstrates, if there is 4 X in range [15.625, 17.313], the 4 X will be completely converted into 65.798 Y when the price goes over 17.313.
We all know that a price can stay in a wide range such as [10, 11] for quite some time, while it’s unlikely so in a narrow range such as [15.625, 15.626].
Thus, if an LP provides liquidity in [15.625, 15.626], we can expect that once the price of X goes over 15.625 and immediately also 15.626, and does not drop back, all X are then forever converted into Y.
The concept of having a targeted price and the order will be executed after the price is crossed is exactly the concept of limit orders! The only difference is that if the range of a range order is not narrow enough, it’s highly possible that the conversion of tokens will be reverted once the price falls back to the range.
As price ranges follow the equation p(i) = 1.0001 ^ i, the range can be quite narrow and a range order can thus effectively serve as a limit order:
When i = 27490, 1.0001²⁷⁴⁹⁰ = 15.6248.⁸
When i = 27491, 1.0001²⁷⁴⁹¹ = 15.6264.⁸
A range of 0.0016 is not THAT narrow but can certainly satisfy most limit order use cases!
⁸ As mentioned previously in note #4, there is a square root in the equation of the price and index, thus the numbers here are for explantion only.
5. Impacts of v3
Higher capital efficiency, LPs become arbitrageurs… as v3 has made tons of radical changes, I’d like to summarize my personal takes of the impacts of v3:
Higher capital efficiency makes one of the most frequently considered indices in DeFi: TVL, total value locked, becomes less meaningful, as 1$ on Uniswap v3 might have the same effect as 100$ or even 2000$ on v2.
The ease of spot exchanging between spot exchanges used to be a huge advantage of spot markets over derivative markets. As LPs will take up the role of arbitrageurs and arbitraging is more likely to happen on v3 itself other than between DEXs, this gap is narrowed … to what extent? No idea though.
LP strategies and the aggregation of NFT of Uniswap v3 liquidity token are becoming the blue ocean for new DeFi startups: see Visor and Lixir. In fact, this might be the turning point for both DeFi and NFT: the two main reasons of blockchain going mainstream now come to the alignment of interest: solving the $$ problem 😏😏😏
In the right venue, which means a place where transaction fees are low enough, such as Optimism, we might see Algo trading firms coming in to share the market of designing LP strategies on Uniswap v3, as I believe Algo trading is way stronger than on-chain strategies or DAO voting to add liquidity that sort of thing.
After reading this article by Parsec.finance: The Dex to Rule Them All, I cannot help but wonder: maybe there is going to be centralized crypto exchanges adopting v3’s approach. The reason is that since orders of LPs in the same tick are executed pro-rata, the endless front-running speeding-competition issue in the Algo trading world, to some degree, is… solved? 🤔
Anyway, personal opinions can be biased and seriously wrong 🙈 I’m merely throwing out a sprat to catch a whale. Having a different voice? Leave your comment down below!
6. Conclusion
That was kinda tough, isn’t it? Glad you make it through here 🥂🥂🥂
There are actually many more details and also a huge section of Oracle yet to be covered. However, since this article is more about features and targeting normal DeFi users, I’ll leave those to the next one; hope there is one 😅
If you have any doubt or find any mistake, please feel free to reach out to me and I’d try to reply AFAP!
Stay tuned and in the meantime let’s wait and see how Uniswap v3 is again pioneering the innovation of DeFi 🌟
Uniswap v3 Features Explained in Depth was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
find your fit meaning 在 Milton Goh Blog and Sermon Notes Facebook 的最讚貼文
Turn “Need to” Into “Want to”
“Not only this, but we also rejoice in our sufferings, knowing that suffering produces perseverance; and perseverance, proven character; and proven character, hope: and hope doesn’t disappoint us, because God’s love has been poured out into our hearts through the Holy Spirit who was given to us.” (Romans 5:3-5 WEB)
In life, many things happen to us, and how events affect us is how we view and attach meaning to them.
The apostle Paul had this revelation, and he taught the church to view suffering in a new light—to rejoice in suffering because it produces perseverance, proven character, and hope.
He knew how to reframe the undesirable things in life to become something that he wanted.
Suffering produces pain, but Paul reframed it to mean the training of his perseverance, character, and hope. Something bad became something precious and valuable.
We can apply this mindset to anything in life so that our trust is always in God and not in our self-efforts.
For example, if you see yourself putting on weight, your flesh may cause you to think, “I must go on a diet and exercise more so that I can lose weight.” This way of viewing the situation makes you reactive—on the defensive posture instead of wholeheartedly choosing to do something because you love it. When something is viewed as a burdensome chore, you will struggle with it.
Instead, why not detach your goal from the activity and just focus on the enjoyment of the beneficial action? You are not trying to exercise to lose weight—you are already young, healthy, slim, fit, and strong. Jesus paid for you to freely receive health and healing by faith.
When you exercise, there doesn’t have to be a goal. You can reframe your mindset and exercise just because you find it fun and enjoyable. “I like to run and feel my body challenging its limits. At the same time, I get time to enjoy the beautiful scenery that God has made, and listen to the Holy Spirit speaking to me.”
Wow, just like that, exercise without needing to gain anything from it becomes something desirable, just like the enjoyable activity of playing games for fun. Guess what, you will still reap the fitness benefits of exercise when you do it.
This method of refraining things is important because we don’t want to fall into the deception of getting things done by self-effort. Whatever is done by the flesh apart from God’s blessing has to be tiresomely maintained by the flesh.
If you’re struggling financially, and you’re always thinking, “I need to work so that I can earn money,” you’ll be perpetually stressed out, your performance at work will de-prove, and the self-reliance hinders God’s gracious provision and favor that must be received by faith.
No, you’re not working to earn money. You are a child of the wealthiest King of Heaven and earth—money is not something worth worrying about. You are always well-supplied and never lacking. God’s blessing makes you truly wealthy in all ways and He adds no sorrow nor trouble to it.
“Yahweh’s blessing brings wealth, and he adds no trouble to it.” (Proverbs 10:22 WEB)
Instead of feeling forced to work, work because you enjoy it, and because the people you deal with at work will benefit greatly from having Jesus as Lord. You would love to show them His glory through your words and deeds. When you think this way, you detach the goal of earning money from the action of working, and it just becomes an activity that you enjoy and look forward to—it becomes something very meaningful that you can be passionate about.
When you do your best at work to shine brightly for God, to showcase Christ in you, you will still be paid, and very likely, your job performance will improve. The state of mind will change from one that’s dragging your feet to work, to one that runs in, excited to embark on the next task for Jesus’ sake so that more may glorify our Father in Heaven.
Many times, God’s word says “repent”, and I agree that we can change our mind about all the ways we think negatively. Reacting by the flesh, we will always try to compensate for some lacking area by doing hard work, choosing man’s way instead of God’s way. To see a positive transformation, all it takes is a little reframing according to the Gospel of Jesus Christ.
We don’t have to act like homeless orphans fending for themselves on the streets. We have a Father, and we are His beloved children. When your flesh tells you that you “need to” do something, reframe the whole thing by seeing it through Jesus’ finished work at the cross and what that sacrifice has accomplished for you. See how you can proactively “want to” do the task. Rest from fleshly self-efforts, and actively receive the supply of grace for every need!
Satan the serpent wants you to be stressed out, defeated, and distracted from the things of God so that you are no threat to his kingdom. Discover the powerful spiritual weapons you have been equipped with, and how to always emerge victorious in spiritual warfare: https://www.miltongoh.net/store/p25/Silencing_the_Serpent%3A_How_Christians_Can_Be_Victorious_in_Spiritual_Warfare.html
find your fit meaning 在 粒方不插電 Youtube 的精選貼文
又要來推坑阿滴桌遊啦!這次要來玩的是戰鎚冥土世界,有興趣的話可以點以下連結:https://www.warhammer-world.info/home/product_detail/15
Warhammer Underworlds is a tactical arena combat game. This is a system designed for balanced, small-scale tactical games that can be played quickly and easily by anyone, but which even experienced players will find challenging to master. The game rules are designed with competitive play in mind; matches can be played in under 45 minutes, on a smaller surface than our larger-scale games, and will be ideal for club or tournament play. And not only that, we’ll be fully supporting an organized play system for this game, right from day one.
The forces you can use in this game will be drawn from races across the Mortal Realms, including some for factions that have not received any new miniatures since we first ventured into the Age of Sigmar. Each of these sets will be composed of a small band of easy-to-assemble, push-fit miniatures in the style of our single-pose heroes to represent a specific band of warriors from that faction. These are provided in coloured plastic, and clip together, so you can quite literally be playing with them within minutes of opening the box with no glue or paint needed! (Though they do look great painted, and your dice will roll better – probably.)
The game is played using unique dice and card decks, and these will, to an extent, be unique to each faction. Both decks of cards used in the game are fully customisable – meaning you can choose to create all manner of combinations of overlapping abilities to use and objectives to achieve. This can be a really rewarding part of the game – and means that even the same faction can be played in wildly different ways. We’re expecting to see all sorts of combinations tried out at game stores, clubs and in tournaments.
希德塔的鏡像城市是幻想和瘋狂的噩夢,不斷變化的迷宮,無盡的樓梯,狹窄的街道和高聳的拱門。原來的城市失去了各種顏色和生命,幾千年來,它已經成為一種不詳的毀滅。那些踏入城牆的不幸,勇敢或莽撞的冒險家,穿過國界之間的帷幕,被困在鏡城之中。對於這樣的頑固的人,所有的希望似乎都失去了。
戰鎚40K
戰鎚
#戰鎚
規則錯誤部分如下:
●1:13-其實是鎚子,不是斧頭。
●8:17-首領讓攻擊擲骰重擲的能力,必須在投擲攻擊骰之前宣告使用。
●12:35-每輪的先後決定擲骰是四顆,不是五顆。
●12:56-阿滴的攻擊擲骰是1爆擊、1鎚、1劍,粒方的雖然也1爆擊,但比較完爆擊後,要比較一般成功的數量。索奧奇的攻擊行動是成功符號是鎚,阿滴還有1鎚,粒方已經沒有其他成功骰,所以該該次的攻擊行動是成功的。
●15:38-野獸人的激勵條件是敵方戰幫有兩名或更多鬥士陣亡,而不是全場。不過這是官方中文版本身印刷的問題(英文是正確的)。